From 48420a6c6f59c3e2c8a1e1c66cc889c542f9422b Mon Sep 17 00:00:00 2001 From: nkzawa Date: Mon, 1 Feb 2016 01:03:49 +0900 Subject: [PATCH] improve manager disconnection and cleanup --- src/main/java/io/socket/client/Manager.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/socket/client/Manager.java b/src/main/java/io/socket/client/Manager.java index 2cc6d9d..69a8909 100644 --- a/src/main/java/io/socket/client/Manager.java +++ b/src/main/java/io/socket/client/Manager.java @@ -490,15 +490,22 @@ public class Manager extends Emitter { On.Handle sub; while ((sub = this.subs.poll()) != null) sub.destroy(); + this.packetBuffer.clear(); + this.encoding = false; this.lastPing = null; + + this.decoder.destroy(); } /*package*/ void close() { - if (this.readyState != ReadyState.OPEN) { - this.cleanup(); - } + logger.fine("disconnect"); this.skipReconnect = true; this.reconnecting = false; + if (this.readyState != ReadyState.OPEN) { + // `onclose` will not fire because + // an open event never happened + this.cleanup(); + } this.backoff.reset(); this.readyState = ReadyState.CLOSED; if (this.engine != null) { @@ -507,7 +514,7 @@ public class Manager extends Emitter { } private void onclose(String reason) { - logger.fine("close"); + logger.fine("onclose"); this.cleanup(); this.backoff.reset(); this.readyState = ReadyState.CLOSED;