summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2011-01-15 14:39:27 +0000
committerMatthew Sackman <matthew@rabbitmq.com>2011-01-15 14:39:27 +0000
commitb08721938ccc2d639cc98bd716e72a2f91aaaf59 (patch)
tree7b0b32b398520e2e55fb8c3862c2c129dd01003b /src
parent0f34fc96e7a58c44cf292fe914ef129624822e69 (diff)
downloadrabbitmq-server-git-b08721938ccc2d639cc98bd716e72a2f91aaaf59.tar.gz
Whoops - client_terminate should not clear the cref, unlike client_delete_and_terminate. Tests pass again now.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_msg_store.erl7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index 7eb0b34c40..fe5cbab89b 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -600,10 +600,8 @@ client_read3(#msg_location { guid = Guid, file = File }, Defer,
end.
clear_client(CRef, State = #msstate { cref_to_guids = CTG,
- clients = Clients,
dying_clients = DyingClients }) ->
State #msstate { cref_to_guids = dict:erase(CRef, CTG),
- clients = dict:erase(CRef, Clients),
dying_clients = sets:del_element(CRef, DyingClients) }.
@@ -756,8 +754,9 @@ handle_cast({client_dying, CRef},
DyingClients1 = sets:add_element(CRef, DyingClients),
write_message(CRef, <<>>, State #msstate { dying_clients = DyingClients1 });
-handle_cast({client_delete, CRef}, State) ->
- noreply(remove_message(CRef, CRef, clear_client(CRef, State)));
+handle_cast({client_delete, CRef}, State = #msstate { clients = Clients }) ->
+ State1 = State #msstate { clients = dict:erase(CRef, Clients) },
+ noreply(remove_message(CRef, CRef, clear_client(CRef, State1)));
handle_cast({write, CRef, Guid},
State = #msstate { file_summary_ets = FileSummaryEts,