My team and I noticed, what we thought was, an odd reaction by Openfire when clients send messages to another with resources that do not exist. Instead of killing the message, Openfire appears to send the message to the resource that was the last to login.
To put it a different way.
UserA logs in with resource A1
UserA logs in somewhere else with resource A2
UserB logs in with resource B1
UserB sends message to UserA, both A1 and A2 receive the message
UserB sends message to UserA/A1, only A1 receives the message
UserB sends message to UserA/A4, UserA/A2 receives the message and UserA/A1 does not receive the message
UserB sends message to UserA/Fault, UserA/A2 receives the message and UserA/A1 does not receive the message
From my understanding of the XMPP standard, this should not be happening. The point of the resources is so that messages to a specific resource only go to that resource. Thus, when a message is sent to a resource that does not exist, shouldn’t that message die? If this is not the case, what code in Openfire do I need to modify in order to change this? In other words, how do I stop this from happening so that if the resource does not exist, the message dies? The way in which we are integrating openfire into our system requires messages / stanzas that are not addressed properly (i.e. incorrect / non-existant resources) MUST die.