Просмотр исходного кода

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.
Loïc Hoguin 14 лет назад
Родитель
Сommit
65048fa657
2 измененных файлов с 4 добавлено и 2 удалено
  1. 2 1
      src/cowboy_ssl_transport.erl
  2. 2 1
      src/cowboy_tcp_transport.erl

+ 2 - 1
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())

+ 2 - 1
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()}