From 8074ddd60a0abe77ea257af4a113e558e69a8c8f Mon Sep 17 00:00:00 2001 From: Ingo Bauersachs Date: Sat, 16 Oct 2021 21:22:42 +0200 Subject: [PATCH] Fix BOSH connection establishment AbstractXMPPConnection waits for the flag lastFeaturesReceived since 57961a8cc1f2df6ecc1afa8c4f8460794d8d2dce, but it is never set from BOSH connections. Use parseFeaturesAndNotify instead of parseFeatures to set the signal. Similarly the XmlEnvironment is not set from bosh, but required in ParserUtils.getXmlLang. --- .../jivesoftware/smack/bosh/XMPPBOSHConnection.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/smack-bosh/src/main/java/org/jivesoftware/smack/bosh/XMPPBOSHConnection.java b/smack-bosh/src/main/java/org/jivesoftware/smack/bosh/XMPPBOSHConnection.java index c3d7109f8..a88507719 100644 --- a/smack-bosh/src/main/java/org/jivesoftware/smack/bosh/XMPPBOSHConnection.java +++ b/smack-bosh/src/main/java/org/jivesoftware/smack/bosh/XMPPBOSHConnection.java @@ -43,6 +43,7 @@ import org.jivesoftware.smack.packet.StanzaError; import org.jivesoftware.smack.util.CloseableUtil; import org.jivesoftware.smack.util.PacketParserUtils; import org.jivesoftware.smack.xml.XmlPullParser; +import org.jivesoftware.smack.xml.XmlPullParserException; import org.igniterealtime.jbosh.AbstractBody; import org.igniterealtime.jbosh.BOSHClient; @@ -200,6 +201,13 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection { + getHost() + ":" + getPort() + "."; throw new SmackException.SmackMessageException(errorMessage); } + + try { + XmlPullParser parser = PacketParserUtils.getParserFor(""); + onStreamOpen(parser); + } catch (XmlPullParserException | IOException e) { + throw new AssertionError("Failed to setup stream environment", e); + } } @Override @@ -511,7 +519,7 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection { parseAndProcessStanza(parser); break; case "features": - parseFeatures(parser); + parseFeaturesAndNotify(parser); break; case "error": // Some BOSH error isn't stream error.