aboutsummaryrefslogtreecommitdiffstats
path: root/src/ranch_conns_sup.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2016-11-15 18:34:19 +0200
committerLoïc Hoguin <[email protected]>2016-11-15 18:34:19 +0200
commita17eb95355d73713cf7dff1e24c3cf26a57bd301 (patch)
tree9f1935f26455a4a76fe8d4d3dbabae5c33ce9d18 /src/ranch_conns_sup.erl
parentc3eb7832e23aa7cdd3dcfea724c17dc9b54657dd (diff)
downloadranch-a17eb95355d73713cf7dff1e24c3cf26a57bd301.tar.gz
ranch-a17eb95355d73713cf7dff1e24c3cf26a57bd301.tar.bz2
ranch-a17eb95355d73713cf7dff1e24c3cf26a57bd301.zip
Fix acceptors getting stuck because of socket errors
We always get the acceptor to resume. The child process will be killed, and the current code will ignore any EXIT message when that happens because the pid isn't in the process dictionary.
Diffstat (limited to 'src/ranch_conns_sup.erl')
-rw-r--r--src/ranch_conns_sup.erl1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/ranch_conns_sup.erl b/src/ranch_conns_sup.erl
index a678881..c448374 100644
--- a/src/ranch_conns_sup.erl
+++ b/src/ranch_conns_sup.erl
@@ -234,6 +234,7 @@ shoot(State=#state{ref=Ref, transport=Transport, ack_timeout=AckTimeout, max_con
%% Only kill the supervised pid, because the connection's pid,
%% when different, is supposed to be sitting under it and linked.
exit(SupPid, kill),
+ To ! self(),
loop(State, CurConns, NbChildren, Sleepers)
end.