Flow
October 13, 2021, 2:19pm
21
Just because it’s a modular architecture doesn’t mean that you can mix different versions of Smack. This may work for patch level releases, but other that that, Smack modules make certain assumptions about other Smack modules that are only guranteed if they are of the same version.
Thanks for explaining. I tried updating Smack in Spark to 4.4.4-snapshot. Now the debugger works, thanks!
But there is a problem connecting to Openfire below version 4.6.0.
igniterealtime:master
← Flowdalic:smack-4.4
opened 07:32PM - 30 Apr 21 UTC
Flow
October 19, 2021, 8:38am
23
Hurray
I don’t spot a problem on the attached screenshot. What am I missing?
I have a main Openfire 4.5.4 server and cannot connect to it. I also have a test server Openfire 4.6.4, I can connect to it.
I have a main Openfire 4.5.4 server and cannot connect to it. I also have a test server Openfire 4.6.4, I can connect to it.
Please look at the comment @guus
igniterealtime:master
← Flowdalic:smack-4.4
I've provided a work-around in https://github.com/igniterealtime/Spark/pull/623/… commits/6bb652847aba902e6ac3586fb53cce5966f33579 - but I wonder if this should be needed.
With these changes, You can authenticate on Openfire 4.5.2 (also on a later version), but you still can't fully log in to Openfire 4.5.2. I suspect that this relates to Smack becoming more strict in parsing stanzas, which causes it to discard a service discovery reply - which is needed to complete the logging in processes.
```
Jul 08, 2021 12:12:51 PM org.jivesoftware.smack.parsing.ExceptionLoggingCallback handleUnparsableStanza
SEVERE: Smack message parsing exception. Content: '</field></x></query></iq>'
org.jivesoftware.smack.parsing.SmackParsingException: text-single fields can have at most one value, this one had 2
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.ensureAtMostSingleValue(DataFormProvider.java:415)
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.parseSingleKindFormField(DataFormProvider.java:313)
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.parseField(DataFormProvider.java:272)
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.parseField(DataFormProvider.java:143)
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.parse(DataFormProvider.java:91)
at org.jivesoftware.smackx.xdata.provider.DataFormProvider.parse(DataFormProvider.java:60)
at org.jivesoftware.smack.provider.Provider.parse(Provider.java:53)
at org.jivesoftware.smack.util.PacketParserUtils.parseExtensionElement(PacketParserUtils.java:834)
at org.jivesoftware.smack.util.PacketParserUtils.addExtensionElement(PacketParserUtils.java:910)
at org.jivesoftware.smack.util.PacketParserUtils.addExtensionElement(PacketParserUtils.java:905)
at org.jivesoftware.smackx.disco.provider.DiscoverInfoProvider.parse(DiscoverInfoProvider.java:72)
at org.jivesoftware.smackx.disco.provider.DiscoverInfoProvider.parse(DiscoverInfoProvider.java:39)
at org.jivesoftware.smack.provider.IqProvider.parse(IqProvider.java:40)
at org.jivesoftware.smack.util.PacketParserUtils.parseIQ(PacketParserUtils.java:549)
at org.jivesoftware.smack.util.PacketParserUtils.parseStanza(PacketParserUtils.java:113)
at org.jivesoftware.smack.AbstractXMPPConnection.parseAndProcessStanza(AbstractXMPPConnection.java:1448)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$1000(XMPPTCPConnection.java:130)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:969)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$700(XMPPTCPConnection.java:913)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:936)
at java.lang.Thread.run(Thread.java:748)
```
Even though the problem with Openfire sending invalid data has been fixed in later releases, it will exist in many of our existing installations. If we can't disable the new strictness in Smack, I think upgrading to Smack 4.4 is not something we should do in the next few ... years? For as long as older versions of Openfire are around. Given that I'm frequently talking to people running a version that's a couple of years old ...
I understand that every Smack update breaks Spark, maybe we should make a change for the debugger to work in the Smack 4.3 branch? Spark has no developers and Smack 4.4 could break Spark again for years to come.