mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 20:30:23 +00:00
Add an accept timeout for code reloading.
Thought it was already there, but I guess not. Anyway it's here now so everything is back to normal. ;)
This commit is contained in:
parent
d4985dd72b
commit
8f818d79df
3 changed files with 15 additions and 13 deletions
|
@ -32,11 +32,13 @@ start_link(LSocket, Transport, Protocol, Opts, ReqsSup) ->
|
|||
-spec acceptor(LSocket::socket(), Transport::module(),
|
||||
Protocol::module(), Opts::term(), ReqsSup::pid()) -> no_return().
|
||||
acceptor(LSocket, Transport, Protocol, Opts, ReqsSup) ->
|
||||
case Transport:accept(LSocket) of
|
||||
case Transport:accept(LSocket, 2000) of
|
||||
{ok, CSocket} ->
|
||||
{ok, Pid} = supervisor:start_child(ReqsSup,
|
||||
[CSocket, Transport, Protocol, Opts]),
|
||||
Transport:controlling_process(CSocket, Pid);
|
||||
{error, timeout} ->
|
||||
ignore;
|
||||
{error, _Reason} ->
|
||||
%% @todo Probably do something here. If the socket was closed,
|
||||
%% we may want to try and listen again on the port?
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
-module(cowboy_ssl_transport).
|
||||
-export([name/0, messages/0, listen/1, accept/1, recv/3, send/2, setopts/2,
|
||||
-export([name/0, messages/0, listen/1, accept/2, recv/3, send/2, setopts/2,
|
||||
controlling_process/2, peername/1, close/1]). %% API.
|
||||
|
||||
-include("include/types.hrl").
|
||||
|
@ -38,12 +38,12 @@ listen(Opts) ->
|
|||
{packet, raw}, {reuseaddr, true},
|
||||
{certfile, CertFile}, {keyfile, KeyFile}, {password, Password}]).
|
||||
|
||||
-spec accept(LSocket::sslsocket())
|
||||
-spec accept(LSocket::sslsocket(), Timeout::timeout())
|
||||
-> {ok, Socket::sslsocket()} | {error, Reason::closed | timeout | posix()}.
|
||||
accept(LSocket) ->
|
||||
case ssl:transport_accept(LSocket) of
|
||||
accept(LSocket, Timeout) ->
|
||||
case ssl:transport_accept(LSocket, Timeout) of
|
||||
{ok, CSocket} ->
|
||||
ssl_accept(CSocket);
|
||||
ssl_accept(CSocket, Timeout);
|
||||
{error, Reason} ->
|
||||
{error, Reason}
|
||||
end.
|
||||
|
@ -79,10 +79,10 @@ close(Socket) ->
|
|||
|
||||
%% Internal.
|
||||
|
||||
-spec ssl_accept(CSocket::sslsocket())
|
||||
-spec ssl_accept(CSocket::sslsocket(), Timeout::timeout())
|
||||
-> {ok, Socket::sslsocket()} | {error, Reason::closed | timeout | posix()}.
|
||||
ssl_accept(CSocket) ->
|
||||
case ssl:ssl_accept(CSocket) of
|
||||
ssl_accept(CSocket, Timeout) ->
|
||||
case ssl:ssl_accept(CSocket, Timeout) of
|
||||
ok ->
|
||||
{ok, CSocket};
|
||||
{error, Reason} ->
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
-module(cowboy_tcp_transport).
|
||||
-export([name/0, messages/0, listen/1, accept/1, recv/3, send/2, setopts/2,
|
||||
-export([name/0, messages/0, listen/1, accept/2, recv/3, send/2, setopts/2,
|
||||
controlling_process/2, peername/1, close/1]). %% API.
|
||||
|
||||
-include("include/types.hrl").
|
||||
|
@ -33,10 +33,10 @@ listen(Opts) ->
|
|||
gen_tcp:listen(Port, [binary, {active, false},
|
||||
{packet, raw}, {reuseaddr, true}]).
|
||||
|
||||
-spec accept(LSocket::socket())
|
||||
-spec accept(LSocket::socket(), Timeout::timeout())
|
||||
-> {ok, Socket::socket()} | {error, Reason::closed | timeout | posix()}.
|
||||
accept(LSocket) ->
|
||||
gen_tcp:accept(LSocket).
|
||||
accept(LSocket, Timeout) ->
|
||||
gen_tcp:accept(LSocket, Timeout).
|
||||
|
||||
-spec recv(Socket::socket(), Length::integer(), Timeout::timeout())
|
||||
-> {ok, Packet::term()} | {error, Reason::closed | posix()}.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue