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