properly jump out of connection loop on state changing errors

This commit is contained in:
Daniel Gultsch 2019-01-19 11:47:21 +01:00
parent dcdf340a41
commit 83c3258dd7

View file

@ -346,9 +346,8 @@ public class XmppConnection implements Runnable {
if (!tlsFactoryVerifier.verifier.verify(account.getServer(), verifiedHostname, ((SSLSocket) localSocket).getSession())) {
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": TLS certificate verification failed");
if (!iterator.hasNext()) {
throw new StateChangingException(Account.State.TLS_ERROR);
}
FileBackend.close(localSocket);
throw new StateChangingException(Account.State.TLS_ERROR);
}
}
localSocket.setSoTimeout(Config.SOCKET_TIMEOUT * 1000);
@ -359,13 +358,13 @@ public class XmppConnection implements Runnable {
}
break; // successfully connected to server that speaks xmpp
} else {
localSocket.close();
if (!iterator.hasNext()) {
throw new StateChangingException(Account.State.STREAM_OPENING_ERROR);
}
FileBackend.close(localSocket);
throw new StateChangingException(Account.State.STREAM_OPENING_ERROR);
}
} catch (final StateChangingException e) {
throw e;
if (!iterator.hasNext()) {
throw e;
}
} catch (InterruptedException e) {
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": thread was interrupted before beginning stream");
return;