No roster push after unsubscribe (probably only if presence subscription is not 'both")

Description

Openfire does not send a roster push 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`.

Environment

None

Activity

Show:

Athanasios Zorbas September 22, 2017 at 8:57 AM

This seems to be caused by the fix of commit id is a9c43db148902f3511f73a1235a252e5a49f4a56

Andrew Urban March 2, 2017 at 11:46 AM

Looks like I've encountered this issue in some other flavor.

Let there are User(U) and Contact(C). They are not in each other's roster and there are no presence subscriptions between them, complete strangers. U would like to add C to his roster. So U adds C to to his roster with an iq -> Openfire replies with a roster push to U. Subscription is "none". Then U sends a presence subscription to C. Openfire routes it to C and sends U a roster push – from now C is in U's roster with the subscription = "none" and ask = "subscribe".

Upon receiving U's subscription request C decides to reject it and replies with the "unsubscribed" presence. Due to RFC 3921 8.2.1.3 Openfire "(1) MUST deliver that presence stanza to the user and (2) MUST initiate a roster push". But there is no roster push in this situation. Moreover, it looks like Openfire silently removes this contact from U's roster at all, rather then just remove this item's "ask" attribute, which is an opposite to RFC: "As a result of this activity, the contact is now in the user's roster with a subscription state of "none", whereas the user is not in the contact's roster at all."

Openfire is 4.0.2.

Fixed

Details

Assignee

Reporter

Labels

Components

Fix versions

Affects versions

Priority

Created November 18, 2016 at 5:11 PM
Updated November 15, 2023 at 4:46 PM
Resolved November 15, 2023 at 4:46 PM