diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-06-16 13:07:52 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-06-16 13:07:52 +0100 |
| commit | 17c42d6aad97aacc4e62e15d27bc394c76e2be9d (patch) | |
| tree | 013c38cb47ceb8ce30e87f6f46eb40c474b8c69f | |
| parent | 2adbfa30d8f58d9c66f0bb3259af775f1dd6d353 (diff) | |
| download | rabbitmq-server-git-17c42d6aad97aacc4e62e15d27bc394c76e2be9d.tar.gz | |
server implements 0.9.1 connection shutdown protocol
| -rw-r--r-- | src/rabbit_reader.erl | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 8e7cd39f8a..e50a9a630c 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -651,6 +651,12 @@ handle_method0(#'connection.close'{}, State = #v1{connection_state = running}) -> lists:foreach(fun rabbit_framing_channel:shutdown/1, all_channels()), maybe_close(State#v1{connection_state = closing}); +handle_method0(#'connection.close'{}, State = #v1{connection_state = CS}) + when CS =:= closing; CS =:= closed -> + %% We're already closed or closing, so we don't need to cleanup + %% anything. + ok = send_on_channel0(State#v1.sock, #'connection.close_ok'{}), + State; handle_method0(#'connection.close_ok'{}, State = #v1{connection_state = closed}) -> self() ! terminate_connection, |
