XMPP spec 2.5 Deleting a Roster Item - Wrong implementation

Hi,

I have the problem, that when I delete a contact in a user’s roster, that the user is also deleted in the contact’s roster.

It doesn’t matter what subscription state the items have.

The spec doesn’t mention anything about deleting the user in the contact’s roster, too:

http://xmpp.org/rfcs/rfc6121.html#roster-delete-success

The old spec even explicitly describes the end state:

http://xmpp.org/rfcs/rfc3921.html#int-remove

“Note: When the user removes the contact from the user’s roster, the end state of the contact’s roster is that the user is still in the contact’s roster with a subscription state of “none”; in order to completely remove the roster item for the user, the contact needs to also send a roster removal request.”

I delete a roster item by using Smack’s Roster.removeEntry, which basically only sends:

<iq from='juliet@example.com/balcony'
       id='hm4hs97y'
       type='set'>
     <query xmlns='jabber:iq:roster'>
       <item jid='nurse@example.com
             subscription='remove'/>
     </query>
   </iq>

I also don’t know the difference, if I remove the item in Openfire admin UI physically via the delete button, and if I update the subscription state to “remove” in edit mode.

The spec says about deleting a roster item: “it MUST update the item in the user’s roster”.

Does it mean removed entries should in fact never be removed but only marked as removed?

In my opinion this is a bug. Or can I configure Openfire how to handle incoming “remove” stanzas?

1 Like