Error or result packet could not be delivered (3.5.1)

Hi,

I’m having trouble with 3.5.1 on Solaris (some of my users have experienced the same problem on Linux). I have a cleint using our in house XMPP library which used to work fine against V2.4.1. I think that was the version, yes i know it was old and I have just moved to a new machine and updated to 3.5.1.

The problem occurs after a disco#info request is made to the server. The client never gets a response and the server has this in it’s log files:

Warn Log 2008.05.06 21:17:44 Error or result packet could not be delivered
<iq type=“error” id=“DiscoRoomQuery” from="testroom3@conference.xmpp.mydomain.com" to="joesoap@xmpp.mydomain.com/spark">
<query xmlns=“http://jabber.org/protocol/disco#info”/>
<error code=“404” type=“cancel”>
<item-not-found xmlns=“urn:ietf:params:xml:ns:xmpp-stanzas”/>
</error>
</iq> Debug Log 2008.05.06 23:28:18 AuthorizationManager: Trying Default Mapping.map(joesoap)
2008.05.06 23:28:18 DefaultAuthorizationMapping: No realm found
2008.05.06 23:28:18 AuthorizationManager: Trying Default Policy.authorize(joesoap , joesoap)
2008.05.06 23:28:18 DefaultAuthorizationPolicy: Checking authenID realm
2008.05.06 23:28:18 RoutingTableImpl: Failed to route packet to JID: joesoap@xmpp.mydomain.com/blink packet:
<iq type=“error” id=“DiscoRoomQuery” from="testroom3@conference.xmpp.mydomain.com" to="joesoap@xmpp.mydomain.com/blink">
<query xmlns=“http://jabber.org/protocol/disco#info”/>
<error code=“404” type=“cancel”>
<item-not-found xmlns=“urn:ietf:params:xml:ns:xmpp-stanzas”/>
</error>
</iq>

I can access the server using the Spark client with no problems. I can also access jabber.org with the Spark client with no problems. This is the XML conversation between Spark and Openfire (in blue) and my client and Openfire in black (names changed to protect the inocent). I’m unable to see any differences between the two except that my client is using double and not single quotes, we use different resource names though I have tried using spark, and the id tags are different.

SENT

<?xml version=‘1.0’ encoding=‘UTF-8’?><stream:stream to=“xmpp.mydomain.com” xmlns=“jabber:client” xmlns:stream=“http://etherx.jabber.org/streams” version=“1.0”>

<?xml version=‘1.0’ encoding=‘UTF-8’?><stream:stream to=‘xmpp.mydomain.com’ xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’>

RECEIVED

<?xml version=‘1.0’ encoding=‘UTF-8’?><stream:stream xmlns:stream=“http://etherx.jabber.org/streams” xmlns=“jabber:client” from=“xmpp.mydomain.com” id=“54aa9577” xml:lang=“en” version=“1.0”>

<?xml version=‘1.0’ encoding=‘UTF-8’?><stream:stream xmlns:stream=“http://etherx.jabber.org/streams” xmlns=“jabber:client” from=“xmpp.mydomain.com” id=“a0219b26” xml:lang=“en” version=“1.0”>

RECEIVED

<stream:features><mechanisms xmlns=“urn:ietf:params:xml:ns:xmpp-sasl”><mechanism>DIGEST-MD5</mec hanism><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS< /mechanism><mechanism>CRAM-MD5</mechanism></mechanisms>< compression xmlns=“http://jabber.org/features/compress”><method>zlib</method></compression><auth xmlns=“http://jabber.org/features/iq-auth”/><register xmlns=“http://jabber.org/features/iq-register”/></stream:features>

<stream:features><mechanisms xmlns=“urn:ietf:params:xml:ns:xmpp-sasl”><mechanism>DIGEST-MD5</mec hanism><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS< /mechanism><mechanism>CRAM-MD5</mechanism></mechanisms>< compression xmlns=“http://jabber.org/features/compress”><method>zlib</method></compression><auth xmlns=“http://jabber.org/features/iq-auth”/><register xmlns=“http://jabber.org/features/iq-register”/></stream:features>

SENT

<auth mechanism=“PLAIN” xmlns=“urn:ietf:params:xml:ns:xmpp-sasl”>XXXXXXXXXXXXXXXXXXXXXXXX</auth&g t;

<auth mechanism=‘PLAIN’ xmlns=‘urn:ietf:params:xml:ns:xmpp-sasl’>XXXXXXXXXXXXXXXXXXXXXXXX</auth&g t;

RECEIVED

<success xmlns=“urn:ietf:params:xml:ns:xmpp-sasl”/>

<success xmlns=“urn:ietf:params:xml:ns:xmpp-sasl”/>

SENT

<stream:stream to=“xmpp.mydomain.com” xmlns=“jabber:client” xmlns:stream=“http://etherx.jabber.org/streams” version=“1.0”>

<stream:stream to=‘xmpp.mydomain.com’ xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’>

RECEIVED

<?xml version=‘1.0’ encoding=‘UTF-8’?><stream:stream xmlns:stream=“http://etherx.jabber.org/streams” xmlns=“jabber:client” from=“xmpp.mydomain.com” id=“54aa9577” xml:lang=“en” version=“1.0”><stream:features><compression xmlns=“http://jabber.org/features/compress”><method>zlib</method></compression><bind xmlns=“urn:ietf:params:xml:ns:xmpp-bind”/><session xmlns=“urn:ietf:params:xml:ns:xmpp-session”/></stream:features>

<?xml version=‘1.0’ encoding=‘UTF-8’?><stream:stream xmlns:stream=“http://etherx.jabber.org/streams” xmlns=“jabber:client” from=“xmpp.mydomain.com” id=“a0219b26” xml:lang=“en” version=“1.0”><stream:features><compression xmlns=“http://jabber.org/features/compress”><method>zlib</method></compression><bind xmlns=“urn:ietf:params:xml:ns:xmpp-bind”/><session xmlns=“urn:ietf:params:xml:ns:xmpp-session”/></stream:features>

SENT

<iq id=“8fPbL-0” type=“set”><bind xmlns=“urn:ietf:params:xml:ns:xmpp-bind”><resource>spark</resource& gt;</bind></iq>

<iq id=‘Bind’ type=‘set’><bind xmlns=‘urn:ietf:params:xml:ns:xmpp-bind’><resource>blink</resource& gt;</bind></iq>

RECEIVED

<iq type=“result” id=“8fPbL-0” to=“xmpp.mydomain.com/54aa9577”><bind xmlns=“urn:ietf:params:xml:ns:xmpp-bind”><jid>joesoap@xmpp.mydomain.com/spark</jid></bind></iq>

<iq type=“result” id=“Bind” to=“xmpp.mydomain.com/a048e8”><bind xmlns=“urn:ietf:params:xml:ns:xmpp-bind”><jid>joesoap@xmpp.mydomain.com/blink</jid></bind></iq>

SENT

<iq id=“8fPbL-1” type=“set”><session xmlns=“urn:ietf:params:xml:ns:xmpp-session”/></iq>

<iq id=‘CreateSession’ type=‘set’><session xmlns=‘urn:ietf:params:xml:ns:xmpp-session’/></iq>

RECEIVED

<iq type=“result” id=“8fPbL-1” to="joesoap@xmpp.mydomain.com/spark"><session xmlns=“urn:ietf:params:xml:ns:xmpp-session”/></iq>

<iq type=“result” id=“CreateSession” to="joesoap@xmpp.mydomain.com/blink"><session xmlns=“urn:ietf:params:xml:ns:xmpp-session”/></iq>

SENT

<iq id=“8fPbL-27” to=“conference.xmpp.mydomain.com” type=“get”><query xmlns=“http://jabber.org/protocol/disco#items”></query></iq>

<iq id=‘DiscoItems’ to=‘conference.xmpp.mydomain.com’ type=‘get’><query xmlns=‘http://jabber.org/protocol/disco#items’>

RECEIVED

<iq type=“result” id=“8fPbL-27” from=“conference.xmpp.mydomain.comto="joesoap@xmpp.mydomain.com/spark"><query xmlns=“http://jabber.org/protocol/disco#items”/></iq>

<iq type=“result” id=“DiscoItems” from=“conference.xmpp.mydomain.comto="joesoap@xmpp.mydomain.com/blink"><query xmlns=“http://jabber.org/protocol/disco#items”/></iq>

SENT

<iq id=“8fPbL-28” to="Blink3D_TestRoom3@conference.xmpp.mydomain.com" type=“get”><query xmlns=“http://jabber.org/protocol/disco#info”></query></iq>

<iq id=‘DiscoRoomQuery’ to=‘Blink3D_TestRoom3@conference.xmpp.mydomain.com’ type=‘get’><query xmlns=‘http://jabber.org/protocol/disco#info’>

RECEIVED

<iq type=“error” id=“8fPbL-28” from="blink3d_testroom3@conference.xmpp.mydomain.com" to="joesoap@xmpp.mydomain.com/spark"><query xmlns=“http://jabber.org/protocol/disco#info”/><error code=“404” type=“cancel”><item-not-found xmlns=“urn:ietf:params:xml:ns:xmpp-stanzas”/></error></iq>

My client is able to access jabber.org with no problems, here is the XML conversation between my client and the jabber.org server which is using ejabberd.

SENT
<?xml version=‘1.0’ ?><stream:stream to=‘jabber.org’ xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’> RECEIVED
<?xml version=‘1.0’?><stream:stream xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ id=‘396371939’ from=‘jabber.org’ version=‘1.0’ xml:lang=‘en’> RECEIVED
<stream:features><starttls xmlns=‘urn:ietf:params:xml:ns:xmpp-tls’/><compression xmlns=‘http://jabber.org/features/compress’>zlib<mechani sms xmlns=‘urn:ietf:params:xml:ns:xmpp-sasl’><mechanism>DIGEST-MD5</mec hanism><mechanism>PLAIN</mechanism></mechanisms><registe r xmlns=‘http://jabber.org/features/iq-register’/></stream:features> SENT
<auth mechanism=‘PLAIN’ xmlns=‘urn:ietf:params:xml:ns:xmpp-sasl’>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&l t;/auth> RECEIVED
<success xmlns=‘urn:ietf:params:xml:ns:xmpp-sasl’/> SENT
<?xml version=‘1.0’ ?><stream:stream to=‘jabber.org’ xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’> RECEIVED
<?xml version=‘1.0’?><stream:stream xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ id=‘2720055209’ from=‘jabber.org’ version=‘1.0’ xml:lang=‘en’> RECEIVED
<stream:features><bind xmlns=‘urn:ietf:params:xml:ns:xmpp-bind’/><session xmlns=‘urn:ietf:params:xml:ns:xmpp-session’/></stream:features> SENT
<iq id=‘Bind’ type=‘set’><bind xmlns=‘urn:ietf:params:xml:ns:xmpp-bind’><resource>spark</resource& gt;</bind></iq> RECEIVED
<iq id=‘Bind’ type=‘result’><bind xmlns=‘urn:ietf:params:xml:ns:xmpp-bind’><jid>joesoap@jabber.org/spark</jid></bind></iq> SENT
<iq id=‘CreateSession’ type=‘set’><session xmlns=‘urn:ietf:params:xml:ns:xmpp-session’/></iq> RECEIVED
<iq type=‘result’ id=‘CreateSession’><session xmlns=‘urn:ietf:params:xml:ns:xmpp-session’/></iq> SENT
<iq id=‘DiscoItems’ to=‘conference.jabber.org’ type=‘get’><query xmlns=‘http://jabber.org/protocol/disco#items’> RECEIVED
<iq type=“result” id=“DiscoItems” from=“conference.jabber.orgto="joesoap@jabber.org/blink"><query xmlns=“http://jabber.org/protocol/disco#items”/></iq> SENT
<iq id=‘DiscoRoomQuery’ to=‘TestRoom3@conference.jabber.org’ type=‘get’><query xmlns=‘http://jabber.org/protocol/disco#info’> RECEIVED
<iq from=‘TestRoom3@conference.jabber.org’ to=‘joesoap@jabber.org/spark’ type=‘error’ id=‘DiscoRoomQuery’><query xmlns=‘http://jabber.org/protocol/disco#info’/><error code=‘404’ type=‘cancel’><item-not-found xmlns=‘urn:ietf:params:xml:ns:xmpp-stanzas’/><text xmlns=‘urn:ietf:params:xml:ns:xmpp-stanzas’>Conference room does not exist</text></error></iq>

Can anyone see what I might be doing wrong or know what the error is is? Is there any additional debugging I can turn on that mights help?

Any help would be appreciated.

Thanks

Hey Clive,

I don’t see any presence packet in the Spark case. Could you check that Spark is sending an available presence to the server? Also verify that your client is also sending an available presence.

Regards,

– Gato

Excellent, thank you so much! Yes indeed, Spark was sending the presense and I was not. Everything working just fine now, thanks again.