If user a sends user b a subscribe and user b responds with an unsubscribed, effectively denying the request, the server does a roster push to the responding client when user a was never in user b's roster to begin with. The correct behavior is not to do the roster push.
Steps to reproduce:
1. User A subscribes to User B
2. User B denies Subscription Request
3. User B receives a roster item for User A after sending Unsubscribed presence, and user A is henceforth in user B's roster until User B explicitly removes them.
I can reproduce this with 3.9.1.
I've debugged the code but couldn't find a fix yet. I guess the problem lies somwhere in this logic:
Roster.java
The if-statement is probably missing something.
Any comment?
Anybody watching this ticket able to comment if it is still valid with release 3.10.2 ?
Last time I checked was with 3.9.1, but I guess this issue is still valid.
Fixed By csh's changes in https://github.com/igniterealtime/Openfire/pull/429
This seems to cause