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
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.