Overall I think this document is in great shape. Some comments below, mostly minor:

Changes in connectivity represent another impetus for a subscriber
   re-subscribing.  If the subscriber's point of attachment to the
   Internet changes, e.g., due to dynamic address allocation, the
   subscriber needs to re-subscribe in order to update the dialog
   endpoint, which is carried in the Contact header field of the
   SUBSCRIBE request.

      Another option for reducing connectivity induced subscription
      refreshes is to use the Globally Routable User Agent (UA) URI
      (GRUU) [10] as a stable endpoint contact for subscriptions.

Yes, exactly. And here it works really well. So I would remove this paragraph as a motivation.

The same problem affects fetching and polling of resource state as
   well.  As a benchmark, if we look at the performance of HTTP [9] in
   similar scenarios, it performs substantially better using conditional
   requests.

I'm curious if you have actual data on this, or just speculation. most HTTP resources are dynamic so its not clear it actually helps http.

NOTIFY request.  The entity tag is unique for that particular
   resource and event notification.

You should clarify what it means to be unique for a resource *and* event notification. So this means if I fetch the resource with http it has a differnet entity tag?

The two types of conditions available for a SUBSCRIBE are a Suppress-
   Body-If-Match and a Suppress-Notify-If-Match; each of these header
   fields contains the last entity-tag seen by the subscriber.  If the
   condition evaluates to true, the first of these conditions will
   instruct the notifier to suppress the body of the next notification
and the second the entire notification.

Is there a reason we need both? Could we just have Suppress-Body-If-Match and if the subscription state is anything besides active and the subscription duration anything different than the Expires in the request, a NOTIFY is sent without a body?

There is also a wildcard entity-tag with
   a special value of "*" that always matches.

what is the use-case for this?

* I think you can actually implement this without option tags. The presence of the Suppress-* header fields basically plays that role. Supported is needed if the UA is not asking for some feature in a request, but merely saying, its supported.

uppress-Body-If-Match:  if this condition evaluates to true, the
      notifier is instructed to suppress (i.e., remove) the body of the
      first NOTIFY request following the SUBSCRIBE.  If false, the
      notifier follows the default behavior.

Its not 'first' - its any subsequet NOTIFY whose body, had this specification not be in use, would contain the resource with that entity tag.

Suppress-Notify-If-Match:  if this condition evaluates to true, the
      notifier is instructed to suppress (i.e., block) the entire first
      NOTIFY request following the SUBSCRIBE, and instead send a 204 (No
      Notification) response.  If false, the notifier again follows the
      default behavior.

I don't think we need a new response code. What is the justification?

 The conditional header field can also be wildcarded using the special
   "*" entity-tag value.  Such a condition always evaluates to true
   regardless of the value of the current entity-tag for the resource.

   Example:

      Suppress-Notify-If-Match: *

This seems like a bad idea in fact. Why is it here?


* Section 4 needs to cover handling of the response to SUBSCRIBE (what happens when a 204 comes), and NOTIFY (store entity tag). Also needs to handle what to do in the case where the notifier doesn't support the mechanism.

A notifier MUST generate entity tags for each resource it is
   responsible for.

      The views might correspond to different groups of users that have
      varying levels of access rights to the resource state, or to
      subscribers that have modified their subscription using event
      notification filtering [11].  For example, in presence [6]
      watchers may get different levels of accuracy in geolocation
      information, based on the presentity's privacy settings.

What do views have to do with this?



Nits:



These procedures have a serious
   deficiency in that they do not allow state to persist over a
subscription refresh, or between two consecutive polls.

State can persist at the UA; its just that you get notified of stuff you already know.

 An entity-tag is a token carried in the SIP-ETag header field, and it
   is opaque to the client.  The notifier is free to decide the means
   for generating an entity-tag, except for the special "*" value.

I think you mean, "The notifier is free to decide on any means for generating the entity-tag. It can have any value, except for "*""


--
Jonathan D. Rosenberg, Ph.D.                   600 Lanidex Plaza
Cisco Fellow                                   Parsippany, NJ 07054-2711
Cisco Systems
[EMAIL PROTECTED]                              FAX:   (973) 952-5050
http://www.jdrosen.net                         PHONE: (973) 952-5000
http://www.cisco.com


_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip

Reply via email to