Subject: Pubsub - DiscoPubNodeResult in MiniClient
In my test case, I have the root node and a first level leaf. The miniclient behaves as expected after this. Once I publish to this node however, the DiscoPubSubNodes / DiscoPubSubNodesResult interaction gets stuck in a recursive loop. The recursive XML is as follows:
... and keeps going infinitely (locking the client up etc etc)..
Tracing through the code, it looks like what happens is that DiscoPubSubNodes gets called on items that are mistaken as nodes, when they are not. This is due to item.Node being null on 102 in FrmPubSub.cs.
Am I correct on this? It appears the valid solution should simply be doing a check to make sure item.Node isn't null before executing the code within the foreach loop. Is there a different way the DiscoverItems call in the Discovery Manager should be used in order to avoid this or a different intended manner? This was all done using Openfire 3.7.0 as well as Ejabberd.
- SEND: <iq id="MX_9" type="get" to="pubsub.folka" xmlns="jabber:client">
- <query xmlns="http://jabber.org/protocol/disco#items" />
- </iq>
- RECV: <iq type="result" id="MX_9" from="pubsub.folka" to="jro@folka/MatriX" xmlns="jabber:client">
- <query xmlns="http://jabber.org/protocol/disco#items">
- <item jid="pubsub.folka" node="/clean_test1" />
- </query>
- </iq>
- SEND: <iq id="MX_10" type="get" to="pubsub.folka" xmlns="jabber:client">
- <query node="/clean_test1" xmlns="http://jabber.org/protocol/disco#items" />
- </iq>
- RECV: <iq type="result" id="MX_10" from="pubsub.folka" to="jro@folka/MatriX" xmlns="jabber:client">
- <query xmlns="http://jabber.org/protocol/disco#items" node="/clean_test1">
- <item jid="pubsub.folka" name="bnd81g37d61f49fgn581" />
- </query>
- </iq>
... and keeps going infinitely (locking the client up etc etc)..
Tracing through the code, it looks like what happens is that DiscoPubSubNodes gets called on items that are mistaken as nodes, when they are not. This is due to item.Node being null on 102 in FrmPubSub.cs.
Am I correct on this? It appears the valid solution should simply be doing a check to make sure item.Node isn't null before executing the code within the foreach loop. Is there a different way the DiscoverItems call in the Discovery Manager should be used in order to avoid this or a different intended manner? This was all done using Openfire 3.7.0 as well as Ejabberd.
This post was edited on 2014-07-30, 17:51 by Alex.