diff --git a/src/net/java/sip/communicator/impl/protocol/msn/ProtocolProviderServiceMsnImpl.java b/src/net/java/sip/communicator/impl/protocol/msn/ProtocolProviderServiceMsnImpl.java
index 91d9e5844..3da777964 100644
--- a/src/net/java/sip/communicator/impl/protocol/msn/ProtocolProviderServiceMsnImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/msn/ProtocolProviderServiceMsnImpl.java
@@ -65,7 +65,7 @@ public class ProtocolProviderServiceMsnImpl
*/
private ProtocolIconMsnImpl msnIcon
= new ProtocolIconMsnImpl();
-
+
/**
* Returns the state of the registration of this protocol provider
* @return the RegistrationState that this provider is
@@ -103,7 +103,7 @@ public void register(final SecurityAuthority authority)
connectAndLogin(authority, SecurityAuthority.AUTHENTICATION_REQUIRED);
}
-
+
/**
* Reconnects if fails fire connection failed.
* @param reasonCode the appropriate SecurityAuthority reasonCode,
@@ -161,7 +161,7 @@ private void connectAndLogin(SecurityAuthority authority, int reasonCode)
RegistrationStateChangeEvent.REASON_USER_REQUEST, "");
return;
}
-
+
//extract the password the user passed us.
char[] pass = credentials.getPassword();
@@ -444,8 +444,17 @@ public void exceptionCaught(MsnMessenger msnMessenger,
// We try to reconnect and ask user to retype password.
reconnect(SecurityAuthority.WRONG_PASSWORD);
}
- else if(throwable instanceof UnknownHostException
- || throwable instanceof SocketException)
+ else if(throwable instanceof SocketException)
+ {
+ // in case of SocketException just fire event and not trigger
+ // unregister it will cause SocketException again and will loop
+ fireRegistrationStateChanged(
+ getRegistrationState(),
+ RegistrationState.CONNECTION_FAILED,
+ RegistrationStateChangeEvent.REASON_INTERNAL_ERROR,
+ null);
+ }
+ else if(throwable instanceof UnknownHostException)
{
unregister(false);
@@ -514,7 +523,7 @@ else if(throwable instanceof UnknownHostException
}
}
}
-
+
/**
* Returns the msn protocol icon.
* @return the msn protocol icon