diff options
| author | Matthew Sackman <matthew@rabbitmq.com> | 2011-01-15 14:39:27 +0000 |
|---|---|---|
| committer | Matthew Sackman <matthew@rabbitmq.com> | 2011-01-15 14:39:27 +0000 |
| commit | b08721938ccc2d639cc98bd716e72a2f91aaaf59 (patch) | |
| tree | 7b0b32b398520e2e55fb8c3862c2c129dd01003b /src | |
| parent | 0f34fc96e7a58c44cf292fe914ef129624822e69 (diff) | |
| download | rabbitmq-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.erl | 7 |
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, |
