From 81b7382c5422ddb21cc16685f2810520770549d9 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Fri, 15 Dec 2006 09:14:45 +0000 Subject: [PATCH] Fix ICQ connection problems. and many error messages --- ...OperationSetBasicInstantMessagingIcqImpl.java | 16 +++++++++++++++- .../icq/ProtocolProviderServiceIcqImpl.java | 8 ++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetBasicInstantMessagingIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetBasicInstantMessagingIcqImpl.java index 4c62973de..81c765a98 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetBasicInstantMessagingIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetBasicInstantMessagingIcqImpl.java @@ -106,7 +106,7 @@ public class OperationSetBasicInstantMessagingIcqImpl /** * The timer executing tasks on specified intervals */ - private Timer keepAliveTimer = new Timer(); + private Timer keepAliveTimer = null; /** * The queue holding the received packets */ @@ -449,11 +449,25 @@ public void registrationStateChanged(RegistrationStateChangeEvent evt) if(keepAliveSendTask == null) { keepAliveSendTask = new KeepAliveSendTask(); + keepAliveTimer = new Timer(); keepAliveTimer.scheduleAtFixedRate( keepAliveSendTask, KEEPALIVE_INTERVAL, KEEPALIVE_INTERVAL); } } + else + if (evt.getNewState() == RegistrationState.UNREGISTERED) + { + // stop keepalive thread + if (keepAliveSendTask != null) + { + keepAliveSendTask.cancel(); + keepAliveTimer.cancel(); + + keepAliveSendTask = null; + keepAliveTimer = null; + } + } } } diff --git a/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java index 532965a06..df6ef79d5 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java @@ -540,6 +540,14 @@ void fireRegistrationStateChanged( RegistrationState oldState, new RegistrationStateChangeEvent( this, oldState, newState, reasonCode, reason); + if(newState.equals(RegistrationState.CONNECTION_FAILED) && + isRegistered()) + { + // if for some reason (keep alive failed) and connection is + // still connected disconneted + unregister(); + } + logger.debug("Dispatching " + event + " to " + registrationListeners.size()+ " listeners.");