From 65048fa6578926625ce7b77c03b06c981fc08609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sat, 30 Apr 2011 22:26:56 +0200 Subject: 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. --- src/cowboy_ssl_transport.erl | 3 ++- src/cowboy_tcp_transport.erl | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') 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()} -- cgit v1.2.3