Browse Source

Ack timeout fixed

master
Nikita 13 years ago
parent
commit
d09e3f7f4f
  1. 17
      src/main/java/com/corundumstudio/socketio/ack/AckManager.java

17
src/main/java/com/corundumstudio/socketio/ack/AckManager.java

@ -109,8 +109,13 @@ public class AckManager implements Disconnectable {
}
private AckCallback removeCallback(UUID sessionId, long index) {
AckEntry ackEntry = getAckEntry(sessionId);
return ackEntry.removeCallback(index);
AckEntry ackEntry = ackEntries.get(sessionId);
// may be null if client disconnected
// before timeout occurs
if (ackEntry != null) {
return ackEntry.removeCallback(index);
}
return null;
}
public AckCallback<?> getCallback(UUID sessionId, long index) {
@ -148,13 +153,7 @@ public class AckManager implements Disconnectable {
@Override
public void onDisconnect(BaseClient client) {
AckEntry entry = ackEntries.remove(client.getSessionId());
if (entry != null) {
for (Long index : entry.getAckIndexes()) {
SchedulerKey key = new AckSchedulerKey(Type.ACK_TIMEOUT, client.getSessionId(), index);
scheduler.cancel(key);
}
}
ackEntries.remove(client.getSessionId());
}
}
Loading…
Cancel
Save