deal with another set of stream:features after bind
This commit is contained in:
parent
560e63564d
commit
d51c4b9655
|
@ -83,7 +83,7 @@ public class XmppConnection implements Runnable {
|
|||
private XmlReader tagReader;
|
||||
private TagWriter tagWriter;
|
||||
private final Features features = new Features(this);
|
||||
private boolean shouldBind = true;
|
||||
private boolean needsBinding = true;
|
||||
private boolean shouldAuthenticate = true;
|
||||
private Element streamFeatures;
|
||||
private final HashMap<Jid, Info> disco = new HashMap<>();
|
||||
|
@ -145,7 +145,7 @@ public class XmppConnection implements Runnable {
|
|||
lastPingSent = SystemClock.elapsedRealtime();
|
||||
this.attempt++;
|
||||
try {
|
||||
shouldAuthenticate = shouldBind = !account.isOptionSet(Account.OPTION_REGISTER);
|
||||
shouldAuthenticate = needsBinding = !account.isOptionSet(Account.OPTION_REGISTER);
|
||||
tagReader = new XmlReader(wakeLock);
|
||||
tagWriter = new TagWriter();
|
||||
this.changeStatus(Account.State.CONNECTING);
|
||||
|
@ -634,11 +634,12 @@ public class XmppConnection implements Runnable {
|
|||
}
|
||||
final ResumePacket resume = new ResumePacket(this.streamId, stanzasReceived, smVersion);
|
||||
this.tagWriter.writeStanzaAsync(resume);
|
||||
} else if (this.streamFeatures.hasChild("bind") && shouldBind) {
|
||||
sendBindRequest();
|
||||
} else {
|
||||
disconnect(true);
|
||||
changeStatus(Account.State.INCOMPATIBLE_SERVER);
|
||||
} else if (needsBinding) {
|
||||
if (this.streamFeatures.hasChild("bind")) {
|
||||
sendBindRequest();
|
||||
} else {
|
||||
throw new IncompatibleServerException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -705,6 +706,7 @@ public class XmppConnection implements Runnable {
|
|||
} catch (final InterruptedException ignored) {
|
||||
}
|
||||
}
|
||||
needsBinding = false;
|
||||
clearIqCallbacks();
|
||||
final IqPacket iq = new IqPacket(IqPacket.TYPE.SET);
|
||||
iq.addChild("bind", "urn:ietf:params:xml:ns:xmpp-bind")
|
||||
|
|
Loading…
Reference in a new issue