IQ packet sent to a full JID that is not available will be routed to other resource of the same user


11.1.3 of the RFC says:

Else if the JID is of the form <user@domain/resource> and no available resource matches the full JID, the recipient's server (a) SHOULD silently ignore the stanza (i.e., neither deliver it nor return an error) if it is a presence stanza, (b) MUST return a <service-unavailable/> stanza error to the sender if it is an IQ stanza, and (c) SHOULD treat the stanza as if it were addressed to <user@domain> if it is a message stanza.

I'm sending the following packet from "test@zeus/writer" (without test@zeus/reader being logged in):

<iq id="RDRHW-2" to="test@zeus/reader" type="get"><query xmlns="jabber:iq:time"></query></iq>

And am getting back in "test@zeus/writer":

<iq id="RDRHW-2" to="test@zeus/reader" from="test@zeus/writer" type="get"><query xmlns="jabber:iq:time"></query></iq>

I have the server debugger turned on and see:

RCV: <iq id="RDRHW-2" to="test@zeus/reader" type="get" from="test@zeus/writer">< query xmlns="jabber:iq:time"/></iq>
SENT: <iq id="RDRHW-2" to="test@zeus/reader" type="get" from="test@zeus/writer"> <query xmlns="jabber:iq:time"/></iq>

So, it looks like the server looks for the resource /reader, then routes the packet right back to /writer. According to the RFC, it should send back <service-unavailable/>. The current behavior seems really confusing since I appear to be getting a packet not intended for me.


Your pinned fields
Click on the next to a field label to start pinning.


Gaston Dombiak


Gaston Dombiak