IQ packet sent to a full JID that is not available will be routed to other resource of the same user
Description
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):
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.
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.