>From RFC 3261:

   "The REGISTER request sent to a registrar includes the contact
   address(es) to which SIP requests for the address-of-record should be
   forwarded.  The address-of-record is included in the To header field
   of the REGISTER request."

   "The 200 (OK) response from the registrar contains a list of Contact
   fields enumerating all current bindings."

I think this says the Contact header in the 200 OK response to REGISTER should 
not include the URI of the responding registrar (or far end SBC), but should 
report the URI of the binding known to the registrar, which would be the 
mapping between the To header and Contact header(s) from the original REGISTER.

In other words, the Contact header in the 200 OK should mirror the Contact 
header in the REGISTER, not change it to the URI of the responding 

In any event, I still think that when Sofia-SIP cannot correlate the Contact 
headers (due to URI modification) and use the 'expires' parameter from the 
Contact header, Sofia-SIP should fall back to the Expires header (if present) 
and use that value.

I ran into this problem connecting to a SIP trunk.  The ITSP was able to 
reconfigure their SBC to preserve the original Contact header URI in the 200 OK 
so now Sofia-SIP is correlating the response and the 'expires' parameter is 
being used to control the re-registration interval.

This being configurable in the SBC lends credence to the validity of what RFC 
3261 appears to require.

I would still prefer that Sofia-SIP use the Expires header as a fallback so 
registration works no matter whether the far end modifies the 200 OK Contact 
header URI.  That would be more robust in that my UAC registration would always 
work without having to identify where this is occurring and reconfigure the 
SBC, which may not always be possible.



----- Original Message ----
From: Jerry Richards <>
Cc: Jim Thomas <>; Inca Rose <>
Sent: Friday, July 31, 2009 2:23:54 PM
Subject: RE: REGISTER Refreshing Error?


SIP Contact Headers should always be the URL of the device sending the
message (i.e. the address at which the sender can be contacted/replied-to).
So I would always expect the Contact Header in the 200 OK to be the URL of
the sender (not the URL of the receiver).  This is why I don't understand
why sofia-sip is comparing the sent and received Contact Header URLs.

Also, the expires value can be sent either as a parameter in the Contact
Header or as a separate Expires SIP header.  A client may suggest an expires
value in the REGISTER request, but the server is allowed come back with a
different expires value in the 200 OK reply.  In any case, the client (i.e.
sofia-sip) must adhere with the expires value in the 200 OK reply.

This is my understanding of the SIP standard.

Best Regards,


Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.
Sofia-sip-devel mailing list

Reply via email to