From 183542d31a64915af4bae45f29b20b8e29e075c0 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 13 Feb 2014 11:31:03 +0400 Subject: [PATCH] On disconnect, AckManager does not cancel open timers #102 --- .../com/corundumstudio/socketio/ack/AckManager.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/corundumstudio/socketio/ack/AckManager.java b/src/main/java/com/corundumstudio/socketio/ack/AckManager.java index f954b4a..390f170 100644 --- a/src/main/java/com/corundumstudio/socketio/ack/AckManager.java +++ b/src/main/java/com/corundumstudio/socketio/ack/AckManager.java @@ -163,7 +163,16 @@ public class AckManager implements Disconnectable { @Override public void onDisconnect(MainBaseClient client) { - ackEntries.remove(client.getSessionId()); + AckEntry e = ackEntries.remove(client.getSessionId()); + if (e == null) { + return; + } + + Set indexes = e.getAckIndexes(); + for (Long index : indexes) { + SchedulerKey key = new AckSchedulerKey(Type.ACK_TIMEOUT, client.getSessionId(), index); + scheduler.cancel(key); + } } }