I have found a behavior that I think is an incorrect implementation of the spec:
In the conditions described below Openfire does not send a roster notification to a client informing them that a Roster entry subscription state has changed to “None”.
This happens when you have 2 users with each other on their rosters, but only 1 has approved the presence subscription. So one has subscription state To
and the other has From
. If the user with the From
state removes the other then the other user will receive a <presence .. type="unsubscribed">
but not a roster notification that the subscription type is now None
.
I can reproduce this in a client that gives you control of subscription approval(like pidgin/adium) with the following steps:
Setup For User1: Has User2 on roster with subscription state From
Setup For User2: Has User1 on roster with subscription state To
Remove User2 from User1’s roster
Result: User1 receives
but does not receive a notification indicating that roster entry for User2 has changed to "None"
The OpenFire server console can be used to verify that the User2 roster entry is None.