【问题标题】:"Failed to parse extension packet in Presence packet" error, causing disconnects, with Smack“无法解析 Presence 数据包中的扩展数据包”错误,导致断开连接,带有 Smack
【发布时间】:2014-03-11 20:34:20
【问题描述】:

我已经实现了一个聊天客户端,它可以永远在线,并向不同的 XMPP 用户发送消息。此客户端连接到 ejabberd 服务器,并使用 Smack 在 java 中实现。

恰好在 1 分钟后,客户端下线,然后在将近 15 秒后重新上线。显示在客户端控制台上的日志如下:

java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen...erd.cloudservicesplatform.biz/cspb2\' id=\'t5f8L-12\' type=\'result\'/>... @1:1264
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3035)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:279)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
Failed to parse extension packet in Presence packet.
java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen
...<query xmlns=\'jabber:iq:version\'/>\n</iq>... @6:6
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3035)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:279)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
Failed to parse extension packet in Presence packet.
java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen
...=\'cspbox107@dev-ejabberd.cloudservicesplatform.biz\'/></query></iq>... @6:292
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3035)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:279)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
Failed to parse extension packet in Presence packet.

【问题讨论】:

    标签: xmpp smack


    【解决方案1】:

    3.3.0 之前的 Smack 在收到格式错误的出席信息节时会抛出异常。使用SMACK-390 更改了此行为。

    你应该:

    • 更新到最新的 Smack 版本(即在撰写本文时为 3.4.1)
    • 告知错误节的来源库/程序的开发人员有关该错误的信息

    编辑:仔细查看日志后,由于您没有提及使用的 Smack 版本,您似乎也可能只是收到了导致断开连接的格式错误的节(这将是一个不可恢复的错误,即使在 Smack 3.4.1 上)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-14
      • 2021-05-27
      • 2014-07-18
      • 2022-08-05
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多