Change summary
src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 8 +++++
1 file changed, 8 insertions(+)
Detailed changes
@@ -161,6 +161,7 @@ public class XmppConnection implements Runnable {
private boolean quickStartInProgress = false;
private boolean isBound = false;
private Element streamFeatures;
+ private Element boundStreamFeatures;
private String streamId = null;
private int stanzasReceived = 0;
private int stanzasSent = 0;
@@ -776,6 +777,10 @@ public class XmppConnection implements Runnable {
}
final boolean processNopStreamFeatures;
if (resumed != null && streamId != null) {
+ if (this.boundStreamFeatures != null) {
+ this.streamFeatures = this.boundStreamFeatures;
+ Log.d(Config.LOGTAG, "putting previous stream features back in place: " + XmlHelper.printElementNames(this.boundStreamFeatures));
+ }
processResumed(resumed);
} else if (failed != null) {
processFailed(failed, false); // wait for new stream features
@@ -829,6 +834,7 @@ public class XmppConnection implements Runnable {
// a successful resume will not send stream features
if (processNopStreamFeatures) {
processNopStreamFeatures();
+ this.boundStreamFeatures = this.streamFeatures;
}
}
mXmppConnectionService.databaseBackend.updateAccount(account);
@@ -1388,6 +1394,7 @@ public class XmppConnection implements Runnable {
throw new StateChangingException(Account.State.INCOMPATIBLE_SERVER);
}
} else {
+
Log.d(
Config.LOGTAG,
account.getJid().asBareJid()
@@ -2422,6 +2429,7 @@ public class XmppConnection implements Runnable {
private void resetStreamId() {
this.streamId = null;
+ this.boundStreamFeatures = null;
}
private List<Entry<Jid, ServiceDiscoveryResult>> findDiscoItemsByFeature(final String feature) {