aboutsummaryrefslogtreecommitdiffstats
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
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.
-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.