summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-02-07 11:42:35 +0000
committerSimon MacMullen <simon@rabbitmq.com>2011-02-07 11:42:35 +0000
commit553d47d65ec42e7b92ece353a60a7c14110ea2c1 (patch)
tree04d189cd94826cbb65a6d8c7e5f97d3086b7d5e5 /src
parent77ba4b3dd4a52307c73002aa201c0e444f14416d (diff)
parent845a759f8993fe6faa66d8ddadfb20e8a1aad31c (diff)
downloadrabbitmq-server-git-553d47d65ec42e7b92ece353a60a7c14110ea2c1.tar.gz
Merge bug 23061 into default (spurious heartbeat timeouts possible during connection termination)
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_reader.erl6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index b5d82ac230..76d392f996 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -357,7 +357,11 @@ mainloop(Deb, State = #v1{parent = Parent, sock= Sock, recv_ref = Ref}) ->
throw({handshake_timeout, State#v1.callback})
end;
timeout ->
- throw({timeout, State#v1.connection_state});
+ ConnectionState = State#v1.connection_state,
+ case ConnectionState of
+ closed -> mainloop(Deb, State);
+ _ -> throw({timeout, ConnectionState})
+ end;
{'$gen_call', From, {shutdown, Explanation}} ->
{ForceTermination, NewState} = terminate(Explanation, State),
gen_server:reply(From, ok),