Subject: [SIP] Conflict between Contact Header definition and example

From: "Beereddy, Srini" <[email-masked]>
Date: Wed, 11 Apr 2001 14:40:19 -0700

There is a conflict between the "Contact" header definition and an example
of it in the section 6.38 2nd paragraph, 2nd line 

"Contact: * ;expires: 0".

According to the definition of Contact header, it can have a "*" or list of
(( name-addr | addr-spec ) *( ";" contact-params ) ).

The "expires" parameter is part of "contact-params" which can only be
present ( name-addr | addr-spec ). So the example in the section is 6.38 is
wrong.

For a quick reference I have added the 2nd paragraph of section 6.38 and
definition of the Contact header

thanks,
Srini Beereddy,
Trillium Digital Systems, an Intel Company.

section 6.38 2nd paragraph
==========================
   A REGISTER request MAY include this header field when deleting
   registrations with "Contact: * ;expires: 0". The Retry-After value
   then indicates when the user might again be reachable. The registrar
   MAY then include this information in responses to future calls.

Contact Header
==============

Contact = ( "Contact" | "m" ) ":" 
    ("*" | (1# (( name-addr | addr-spec ) *( ";" contact-params ) )))

   name-addr      = [ display-name ] "<" addr-spec ">"
   addr-spec      = SIP-URL | URI
   display-name   = *token | quoted-string

   contact-params = "q"       "=" qvalue
                  | "action"  "=" "proxy" | "redirect"
                  | "expires" "=" delta-seconds | <"> SIP-date <">
                  | contact-extension

   contact-extension = generic-param
   qvalue            = ( "0" [ "." 0*3DIGIT ] )
                     | ( "1" [ "." 0*3("0") ] )

_______________________________________________
This list is for continuing development of the SIP protocol.
The sip-implementor's list is the place to discuss implementation,
and to receive advice on understanding existing sip.
To subscribe to it, send mail to 
[email-masked] with "subscribe" in the body.

---

From: "Henning G. Schulzrinne" <[email-masked]>
Date: Wed, 11 Apr 2001 21:43:10 -0400

Thanks for pointing this out. I would say that

Contact: *
Expires: 0

would be sufficient. Indeed, is there any reasonable use for the * URL
beyond expiration, i.e., I'm assuming that somethig like

Contact: *
Expires: 3600

would not be allowed. It's probably too late for that, but one could
probably simplify to have 'Expires: 0' mean

What do implementations do:
1) two headers (Expires: 0  and Contact: *)
2) one header: (Contact: *;expires: 0)
3) ignore the * and just use Expires: 0 [I doubt this is common...] 

I suspect the solution will be to allow  ;expires=something or just
;expires=0 with *.

-- 
Henning Schulzrinne   http://www.cs.columbia.edu/~hgs