diff options
author | Loïc Hoguin <[email protected]> | 2012-09-26 00:40:48 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2012-09-26 00:41:27 +0200 |
commit | cd099983b1b807b87fa050d1e4ff0a13aba25b49 (patch) | |
tree | 844af725fa7102dd1c532aebecce1bf927c83450 | |
parent | de9b6f7a707efd308a6d6535d8296c15ea277308 (diff) | |
download | ranch-cd099983b1b807b87fa050d1e4ff0a13aba25b49.tar.gz ranch-cd099983b1b807b87fa050d1e4ff0a13aba25b49.tar.bz2 ranch-cd099983b1b807b87fa050d1e4ff0a13aba25b49.zip |
Add the {nodelay, boolean()} option controlling TCP_NODELAY
Enabled by default.
A comprehensive explanation about TCP_NODELAY and the Nagle algorithm
can be found at http://www.stuartcheshire.org/papers/NagleDelayedAck/
-rw-r--r-- | src/ranch_ssl.erl | 11 | ||||
-rw-r--r-- | src/ranch_tcp.erl | 8 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/ranch_ssl.erl b/src/ranch_ssl.erl index 72b59db..1471f62 100644 --- a/src/ranch_ssl.erl +++ b/src/ranch_ssl.erl @@ -64,6 +64,7 @@ messages() -> {ssl, ssl_closed, ssl_error}. %% by default.</dd> %% <dt>keyfile</dt><dd>Optional. Path to the file containing the user's %% private PEM encoded key.</dd> +%% <dt>nodelay</dt><dd>Optional. Enable TCP_NODELAY. Enabled by default.</dd> %% <dt>password</dt><dd>Optional. String containing the user's password. %% All private keyfiles must be password protected currently.</dd> %% <dt>port</dt><dd>TCP port number to open. Defaults to 0 (see below)</dd> @@ -78,8 +79,8 @@ messages() -> {ssl, ssl_closed, ssl_error}. %% @see ssl:listen/2 -spec listen([{backlog, non_neg_integer()} | {cacertfile, string()} | {certfile, string()} | {ciphers, [ssl:erl_cipher_suite()] | string()} - | {ip, inet:ip_address()} | {keyfile, string()} | {password, string()} - | {port, inet:port_number()}]) + | {ip, inet:ip_address()} | {keyfile, string()} | {nodelay, boolean()} + | {password, string()} | {port, inet:port_number()}]) -> {ok, ssl:sslsocket()} | {error, atom()}. listen(Opts) -> ranch:require([crypto, public_key, ssl]), @@ -89,8 +90,10 @@ listen(Opts) -> %% The port in the options takes precedence over the one in the %% first argument. ssl:listen(0, ranch:filter_options(Opts2, - [backlog, cacertfile, certfile, ciphers, ip, keyfile, password, port], - [binary, {active, false}, {packet, raw}, {reuseaddr, true}])). + [backlog, cacertfile, certfile, ciphers, ip, + keyfile, nodelay, password, port], + [binary, {active, false}, {packet, raw}, + {reuseaddr, true}, {nodelay, true}])). %% @doc Accept connections with the given listening socket. %% diff --git a/src/ranch_tcp.erl b/src/ranch_tcp.erl index 2a9ccd6..18322db 100644 --- a/src/ranch_tcp.erl +++ b/src/ranch_tcp.erl @@ -50,6 +50,7 @@ messages() -> {tcp, tcp_closed, tcp_error}. %% Defaults to 1024.</dd> %% <dt>ip</dt><dd>Interface to listen on. Listen on all interfaces %% by default.</dd> +%% <dt>nodelay</dt><dd>Optional. Enable TCP_NODELAY. Enabled by default.</dd> %% <dt>port</dt><dd>TCP port number to open. Defaults to 0 (see below).</dd> %% </dl> %% @@ -61,15 +62,16 @@ messages() -> {tcp, tcp_closed, tcp_error}. %% %% @see gen_tcp:listen/2 -spec listen([{backlog, non_neg_integer()} | {ip, inet:ip_address()} - | {port, inet:port_number()}]) + | {nodelay, boolean()} | {port, inet:port_number()}]) -> {ok, inet:socket()} | {error, atom()}. listen(Opts) -> Opts2 = ranch:set_option_default(Opts, backlog, 1024), %% We set the port to 0 because it is given in the Opts directly. %% The port in the options takes precedence over the one in the %% first argument. - gen_tcp:listen(0, ranch:filter_options(Opts2, [port, ip, backlog], - [binary, {active, false}, {packet, raw}, {reuseaddr, true}])). + gen_tcp:listen(0, ranch:filter_options(Opts2, [backlog, ip, nodelay, port], + [binary, {active, false}, {packet, raw}, + {reuseaddr, true}, {nodelay, true}])). %% @doc Accept connections with the given listening socket. %% @see gen_tcp:accept/2 |