aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2011-04-30 22:26:56 +0200
committerLoïc Hoguin <[email protected]>2011-04-30 22:26:56 +0200
commit65048fa6578926625ce7b77c03b06c981fc08609 (patch)
treeb1717f694597119a1b0097b2a31c4214c0f41c4c
parentc044fa9602fb9ef39e8dc2bf28ac44ebb638a265 (diff)
downloadcowboy-65048fa6578926625ce7b77c03b06c981fc08609.tar.gz
cowboy-65048fa6578926625ce7b77c03b06c981fc08609.tar.bz2
cowboy-65048fa6578926625ce7b77c03b06c981fc08609.zip
Add backlog transport option.
This fixes issues with the http_load benchmark tool. The default backlog option from OTP only queues up to 5 connections, which is way too low for a fast-responding server. Issue initially found thanks to DeadZen bugging me to test cowboy with http_load. Fix found thanks to ostinelli's misultin already having the backlog option which was the one thing it did differently than cowboy.
-rw-r--r--src/cowboy_ssl_transport.erl3
-rw-r--r--src/cowboy_tcp_transport.erl3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/cowboy_ssl_transport.erl b/src/cowboy_ssl_transport.erl
index 0e80e4e..41577fc 100644
--- a/src/cowboy_ssl_transport.erl
+++ b/src/cowboy_ssl_transport.erl
@@ -31,11 +31,12 @@ messages() -> {ssl, ssl_closed, ssl_error}.
-> {ok, LSocket::ssl:sslsocket()} | {error, Reason::atom()}.
listen(Opts) ->
{port, Port} = lists:keyfind(port, 1, Opts),
+ Backlog = proplists:get_value(backlog, Opts, 128),
{certfile, CertFile} = lists:keyfind(certfile, 1, Opts),
{keyfile, KeyFile} = lists:keyfind(keyfile, 1, Opts),
{password, Password} = lists:keyfind(password, 1, Opts),
ssl:listen(Port, [binary, {active, false},
- {packet, raw}, {reuseaddr, true},
+ {backlog, Backlog}, {packet, raw}, {reuseaddr, true},
{certfile, CertFile}, {keyfile, KeyFile}, {password, Password}]).
-spec accept(LSocket::ssl:sslsocket(), Timeout::timeout())
diff --git a/src/cowboy_tcp_transport.erl b/src/cowboy_tcp_transport.erl
index 45c87df..49003bd 100644
--- a/src/cowboy_tcp_transport.erl
+++ b/src/cowboy_tcp_transport.erl
@@ -30,8 +30,9 @@ messages() -> {tcp, tcp_closed, tcp_error}.
-> {ok, LSocket::inet:socket()} | {error, Reason::atom()}.
listen(Opts) ->
{port, Port} = lists:keyfind(port, 1, Opts),
+ Backlog = proplists:get_value(backlog, Opts, 128),
gen_tcp:listen(Port, [binary, {active, false},
- {packet, raw}, {reuseaddr, true}]).
+ {backlog, Backlog}, {packet, raw}, {reuseaddr, true}]).
-spec accept(LSocket::inet:socket(), Timeout::timeout())
-> {ok, Socket::inet:socket()}