Subject: Re: [xmpp] [Standards] none + pending in

From: Peter Saint-Andre <[email-masked]>
Date: Mon, 03 Aug 2009 14:43:26 -0600

On 8/3/09 2:06 PM, Philipp Hancke wrote:
> Peter Saint-Andre wrote:
> [...]
>> In my working copy I now have the following text:
>>
>> APPENDIX A.1
>>
>>    3.  "None + Pending In" = contact and user are not subscribed to each
>>        other, and contact has sent user a subscription request but user
>>        has not replied yet; in fact, the user's server MUST NOT add the
>>        contact to the user's roster or and MUST NOT push or deliver
>>        roster items to the user in this state, but instead MUST simply
> 
> Remove the "or and MUST NOT push or deliver roster items to the user in
> this state" please - at least the "or" :-)
> There are no roster items in that state unless the user had manually
> added them before and those should still be delivered (see
> http://mail.jabber.org/pipermail/standards/2009-July/022270.html ).
>
>>        note the existence of the inbound presence subscription request
>>        and wait until the user has approved the subscription request
>>        before adding the contact to the user's roster.

Aha, that was unclear. Adjusted/corrected text....

   3.  "None + Pending In" = contact and user are not subscribed to each
       other, and contact has sent user a subscription request but user
       has not replied yet; this state might or might not be reflected
       in the user's roster, as follows: if the user has created a
       roster item for the contact then the server MUST maintain that
       roster item and simply note the existence of the inbound presence
       subscription request, but if not then the user's server MUST NOT
       create a roster item for the user and MUST simply note the
       existence of the inbound presence subscription request and wait
       until the user has approved the subscription request before
       adding the contact to the user's roster.

>> SECTION 3.3.3
>>
>>    When the contact's server receives the unsubscribe notification, it
>>    MUST first check if the user is in the contact's roster with
>>    subscription='from' or subscription='both' (i.e., a subscription
>>    state of "From", "From + Pending Out", or "Both"; see Appendix A).
>>    If this check is successful, the contact's server MUST initiate a
>>    roster push to all of the contact's interested resources, containing
>>    an updated roster item for the contact with the 'subscription'
>>    attribute set to a value of "none" (if the subscription state was
>>    "From" or "From + Pending Out") or "to" (if the subscription state
>>    was "Both").
>>
>> ...
>>
>>    Otherwise -- that is, if the contact does not exist, if the user is
>>    not in the contact's roster, or if the user is in the contact's
>>    roster with a subscription state other than those described in the
>>    foregoing check -- then the contact's server MUST silently ignore the
>>    stanza by not delivering it to the contact, not modifying the
>>    contact's roster, and not generating a roster push to the contact's
>>    interested resources.  However, if the contact's server is keeping
>>    track of an inbound presence subscription request from the user to
>>    the contact without having added the user to the contact's roster
>>    because the contact has not yet approved or denied the subscription
>>    request (equivalent to a roster state of "None + Pending In"), then
> 
> s/roster state/subscription state/

Fixed in my working copy.

>>    the contact's server MUST simply remove any record of the inbound
>>    presence subscription request (it cannot remove the user from the
>>    contact's roster because the user was never added to the contact's
>>    roster).
>>
>> Let me know if I missed anything.
> 
> looks quite good now. thanks!

Super.

Peter

- --
Peter Saint-Andre
https://stpeter.im/

---

From: Peter Saint-Andre <[email-masked]>
Date: Mon, 03 Aug 2009 15:00:32 -0600

>        adding the contact to the user's roster.

In fact this is even better...

   3.  "None + Pending In" = contact and user are not subscribed to each
       other, and contact has sent user a subscription request but user
       has not replied yet; this state might or might not be reflected
       in the user's roster, as follows: if the user has created a
       roster item for the contact then the server MUST maintain that
       roster item and also note the existence of the inbound presence
       subscription request, whereas if the user has not created a
       roster item for the contact then the user's server MUST note the
       existence of the inbound presence subscription request but MUST
       NOT create a roster item for the contact (instead, the server
       MUST wait until the user has approved the subscription request
       before adding the contact to the user's roster).

Peter

- --
Peter Saint-Andre
https://stpeter.im/