diff options
author | Loïc Hoguin <[email protected]> | 2015-08-20 16:05:50 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2015-08-20 16:05:50 +0200 |
commit | ee1f82782835096208059ea14d52bf2cc0283323 (patch) | |
tree | 66d0dd5f157b088027a74c546a7f480bd974ae29 /src/ranch_conns_sup.erl | |
parent | c867ec582d445b251ff659ba23f522b5278d5119 (diff) | |
download | ranch-ee1f82782835096208059ea14d52bf2cc0283323.tar.gz ranch-ee1f82782835096208059ea14d52bf2cc0283323.tar.bz2 ranch-ee1f82782835096208059ea14d52bf2cc0283323.zip |
Ensure ranch_conns_sup doesn't crash on protocol start crash
Diffstat (limited to 'src/ranch_conns_sup.erl')
-rw-r--r-- | src/ranch_conns_sup.erl | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ranch_conns_sup.erl b/src/ranch_conns_sup.erl index f3a6a0c..008b02b 100644 --- a/src/ranch_conns_sup.erl +++ b/src/ranch_conns_sup.erl @@ -111,7 +111,7 @@ loop(State=#state{parent=Parent, ref=Ref, conn_type=ConnType, max_conns=MaxConns}, CurConns, NbChildren, Sleepers) -> receive {?MODULE, start_protocol, To, Socket} -> - case Protocol:start_link(Ref, Socket, Transport, Opts) of + try Protocol:start_link(Ref, Socket, Transport, Opts) of {ok, Pid} -> shoot(State, CurConns, NbChildren, Sleepers, To, Socket, Pid, Pid); {ok, SupPid, ProtocolPid} when ConnType =:= supervisor -> @@ -124,6 +124,13 @@ loop(State=#state{parent=Parent, ref=Ref, conn_type=ConnType, [Ref, Protocol, Ret]), Transport:close(Socket), loop(State, CurConns, NbChildren, Sleepers) + catch Class:Reason -> + To ! self(), + error_logger:error_msg( + "Ranch listener ~p connection process start failure; " + "~p:start_link/4 crashed with reason: ~p:~999999p~n", + [Ref, Protocol, Class, Reason]), + loop(State, CurConns, NbChildren, Sleepers) end; {?MODULE, active_connections, To, Tag} -> To ! {Tag, CurConns}, |