diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java index a67aba179..f3c01a822 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java @@ -19,6 +19,7 @@ import net.java.sip.communicator.service.protocol.Message; import net.java.sip.communicator.service.protocol.event.*; import net.java.sip.communicator.util.*; +import net.java.sip.communicator.service.protocol.jabberconstants.*; /** * A straightforward implementation of the basic instant messaging operation @@ -467,6 +468,10 @@ void fireUnregisterd() jabberProvider.getRegistrationState(), RegistrationState.CONNECTION_FAILED, RegistrationStateChangeEvent.REASON_INTERNAL_ERROR, null); + + opSetPersPresence.fireProviderPresenceStatusChangeEvent( + opSetPersPresence.getPresenceStatus(), + JabberStatusEnum.OFFLINE); } } } diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java index f96442f4b..17d0f824c 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java @@ -702,7 +702,7 @@ private void assertConnected() throws IllegalStateException * @param oldStatus the status our stack had so far * @param newStatus the status we have from now on */ - private void fireProviderPresenceStatusChangeEvent( + void fireProviderPresenceStatusChangeEvent( PresenceStatus oldStatus, PresenceStatus newStatus) { if(oldStatus.equals(newStatus)){ diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java index c40164ce7..ebdb01b51 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java @@ -13,6 +13,7 @@ import org.jivesoftware.smack.util.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.event.*; +import net.java.sip.communicator.service.protocol.jabberconstants.*; import net.java.sip.communicator.util.*; /** @@ -419,6 +420,15 @@ public void connectionClosed() oldConnectionState, RegistrationState.UNREGISTERED, RegistrationStateChangeEvent.REASON_USER_REQUEST, null); + + OperationSetPersistentPresenceJabberImpl opSetPersPresence = + (OperationSetPersistentPresenceJabberImpl) + getSupportedOperationSets() + .get(OperationSetPersistentPresence.class.getName()); + + opSetPersPresence.fireProviderPresenceStatusChangeEvent( + opSetPersPresence.getPresenceStatus(), + JabberStatusEnum.OFFLINE); } public void connectionClosedOnError(Exception exception) @@ -430,6 +440,15 @@ public void connectionClosedOnError(Exception exception) RegistrationState.UNREGISTERED, RegistrationStateChangeEvent.REASON_INTERNAL_ERROR, exception.getLocalizedMessage()); + + OperationSetPersistentPresenceJabberImpl opSetPersPresence = + (OperationSetPersistentPresenceJabberImpl) + getSupportedOperationSets() + .get(OperationSetPersistentPresence.class.getName()); + + opSetPersPresence.fireProviderPresenceStatusChangeEvent( + opSetPersPresence.getPresenceStatus(), + JabberStatusEnum.OFFLINE); } } }