I’‘ve been playing around with the new alpha 4 build, and in particular testing the new implementation of handling subscription requests to offline users. I’'ve noticed a discrepancy in the protocol between sending subscription requests to online and offline users, which is affecting my client.
If user A sends user B a subscription request when user B is online, user B receives the subscription request without any roster pushes from the server that contain user A in the list (which makes sense since user B has not added user A to the roster yet).
However, suppose user A sends user B a subscription request when user B is offline. When user B comes online, he receives a roster push with user A contained in his roster (with subscription=“none”), even though he has not yet added him. He then receives the subscription request from user A.
I don’‘t think that user A should be in user B’'s roster list until
user B has either added user A, or
user B has granted subscription to user A.
I think the offline case should be more like the online case, in that user A should not be in user B’'s roster before user B even receives or grants the subscription request.
Please let me know what you think…