From 4e4bb59d229427f199659889d54233cbdf20055c Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Fri, 27 Jan 2012 09:36:18 +0000 Subject: [PATCH] Some cleanup in jabber keepalive on connection error. --- .../keepalive/KeepAliveManager.java | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/keepalive/KeepAliveManager.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/keepalive/KeepAliveManager.java index 3ebe8f7ef..5f99a18c0 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/keepalive/KeepAliveManager.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/keepalive/KeepAliveManager.java @@ -112,6 +112,7 @@ public void registrationStateChanged(RegistrationStateChangeEvent evt) } keepAliveSendTask = new KeepAliveSendTask(); + waitingForPacketWithID = null; keepAliveCheckInterval = SmackConfiguration.getKeepAliveInterval(); @@ -129,6 +130,8 @@ else if(evt.getNewState() == RegistrationState.UNREGISTERED || evt.getNewState() == RegistrationState.CONNECTION_FAILED || evt.getNewState() == RegistrationState.AUTHENTICATION_FAILED) { + waitingForPacketWithID = null; + if(parentProvider.getConnection() != null) parentProvider.getConnection().removePacketListener(this); @@ -216,19 +219,26 @@ public void run() return; } - // lets send a ping - KeepAliveEvent ping = new KeepAliveEvent( - parentProvider.getOurJID(), - parentProvider.getAccountID().getService() - ); - - waitingForPacketWithID = ping.getPacketID(); - - if (logger.isTraceEnabled()) - logger.trace("send keepalive for acc: " - + parentProvider.getAccountID().getDisplayName()); - - parentProvider.getConnection().sendPacket(ping); + try + { + // lets send a ping + KeepAliveEvent ping = new KeepAliveEvent( + parentProvider.getOurJID(), + parentProvider.getAccountID().getService() + ); + + if (logger.isTraceEnabled()) + logger.trace("send keepalive for acc: " + + parentProvider.getAccountID().getDisplayName()); + + waitingForPacketWithID = ping.getPacketID(); + parentProvider.getConnection().sendPacket(ping); + } + catch(Throwable t) + { + logger.error("Error sending ping request!", t); + waitingForPacketWithID = null; + } } } }