summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/isode/stroke/client/ClientSessionStanzaChannel.java')
-rw-r--r--src/com/isode/stroke/client/ClientSessionStanzaChannel.java18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/com/isode/stroke/client/ClientSessionStanzaChannel.java b/src/com/isode/stroke/client/ClientSessionStanzaChannel.java
index 0aa024f..e8275a0 100644
--- a/src/com/isode/stroke/client/ClientSessionStanzaChannel.java
+++ b/src/com/isode/stroke/client/ClientSessionStanzaChannel.java
@@ -9,6 +9,7 @@
package com.isode.stroke.client;
import com.isode.stroke.base.Error;
+import com.isode.stroke.base.IDGenerator;
import com.isode.stroke.elements.IQ;
import com.isode.stroke.elements.Message;
import com.isode.stroke.elements.Presence;
@@ -26,7 +27,7 @@ import java.util.logging.Logger;
* StanzaChannel implementation around a ClientSession.
*/
public class ClientSessionStanzaChannel extends StanzaChannel {
- private final IDGenerator idGenerator = new IDGenerator();
+ private IDGenerator idGenerator = new IDGenerator();
private ClientSession session;
private static final Logger logger_ = Logger.getLogger(ClientSessionStanzaChannel.class.getName());
private SignalConnection sessionInitializedConnection;
@@ -34,6 +35,21 @@ public class ClientSessionStanzaChannel extends StanzaChannel {
private SignalConnection sessionStanzaReceivedConnection;
private SignalConnection sessionStanzaAckedConnection;
+ protected void finalize() throws Throwable {
+ try {
+ if(session != null) {
+ sessionFinishedConnection.disconnect();
+ sessionStanzaReceivedConnection.disconnect();
+ sessionStanzaAckedConnection.disconnect();
+ sessionInitializedConnection.disconnect();
+ session = null;
+ }
+ }
+ finally {
+ super.finalize();
+ }
+ }
+
public void setSession(final ClientSession session) {
assert this.session == null;
this.session = session;