Subject: [xmpp] 3921bis: subscription approval clarification

From: Peter Saint-Andre <[email-masked]>
Date: Tue, 21 Sep 2010 15:47:41 -0600

Right now, 3921bis is bit underspecified on one point about the
subscription approval feature we've added: does the server (1)
automatically remove the approval when the contact sends a subscription
request to the user, or (2) keep the approval around in case of
subscription synchronization issues?

If the server chooses #1, then after the contact sends a subscription
request to the user it will modify the user's roster so that the roster
item for the contact no longer contains approved='true'.

However, if the server chooses #2, then the roster item will always
contain approved='true' (until and unless the user sends "unsubscribed"
to the contact).

IMHO it is best to leave this choice up to the server implementation,
because I know of situations when it is helpful to keep a record of the
approval. One rather painful situation is dealing with SIP-XMPP gateways
that treat presence subscriptions as temporary and therefore send a
presence stanza of type "unsubscribed" whenever the SIP contact goes
offline, as described here:

http://tools.ietf.org/html/draft-saintandre-sip-xmpp-presence-02#section-2.3.2

I think it would be helpful to specify this in a bit more detail, so I
propose adding the following implementation note to Section 3.4.2 of 3921bs:

      Implementation Note: It is a matter of implementation or local
      service policy whether the server maintains a record of the
      subscription approval after it has received a presence
      subscription request from the contact.  If the server does not
      maintain such a record, upon receiving the subscription request it
      will not include the 'approved' attribute in the roster item for
      the contact (i.e., in subsequent roster pushes and roster
      results).  If the server maintains such a record, it will always
      include the 'approved' attribute (set to "true") in the roster
      item for the contact, until and unless the user sends a presence
      stanza of type "unsubscribed" to the contact.

/psa