aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java')
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java31
1 files changed, 30 insertions, 1 deletions
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 3e24ffd..fcffd6a 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java
@@ -358,7 +358,36 @@ public class ProtocolProviderServiceJabberImpl
if(accountResource == null || accountResource.equals(""))
accountResource = "sip-comm";
- connection.login(userID, password, accountResource);
+ SASLAuthentication.supportSASLMechanism("PLAIN", 0);
+
+ try
+ {
+ connection.login(userID, password, accountResource);
+ } catch (XMPPException e1)
+ {
+ // after updating to new smack lib
+ // login mechanisum changed
+ // this is a way to avoid the problem
+ try
+ {
+ // server disconnect us after such un error
+ // cleanup
+ try
+ {
+ connection.disconnect();
+ } catch (Exception e)
+ {}
+ // and connect again
+ connection.connect();
+ // logging in to google need and service name
+ connection.login(userID + "@" + serviceName,
+ password, accountResource);
+ } catch (XMPPException e2)
+ {
+ // if it happens once again throw the original exception
+ throw e1;
+ }
+ }
if(connection.isAuthenticated())
{