>Sections 12.1.1 says:
>------------------------------------
>   When a UAS responds to a request with a response that establishes a
>   dialog (such as a 2xx to INVITE), the UAS MUST copy all Record-Route
>   header field values from the request into the response (including the
>   URIs, URI parameters, and any Record-Route header field parameters,
>   whether they are known or unknown to the UAS) and MUST maintain the
>   order of those values.  The UAS MUST add a Contact header field to
>   the response.
>------------------------------------
>
>Now in 12.1.1 it says that the UAS MUST add a Contact header if the 
>response establishes a dialog.
>What is now a "dialog"? a real "dialog" (2XX) or both a real dialog and 
>an "early-dialog" (1XX)?
>
>* Question: If it means both then any 1XX (non 100) MUST contain a 
>Contact header, is it?

Yes, that is my interpretation. Note that a "MUST" in the text of RFC 3261 
takes precedence over the content of Table 2.

If any in-dialog request needs to be sent prior to receipt of the final 
response, then the Remote Target (from the Contact) and Route Set (from the 
Record-Route) must be set up based on the 1xx response. This is needed 
especially if reliable provisional responses are being used. The PRACK needs 
the remote target and route set. Some User Agents like to send DTMF in INFO 
requests, and like to do it before the session is established.

[RL]Mostly agree. My interpretation is

12.1.1 means  contact header must be added if response establish a dialog.

So the question becomes which response establishes dialog?
in RFC3261,2xx and 101-199 responses with a To tag would establish
dialog, ***if not yet***.

So Contact header must be present, for each different to tag from
RFC3261's perspective
1)2xx to ini-INVITE
2)each unreliable non-100 1xx response to ini-INVITE
3)first reliable non-100 1xx response

>
>
>But is also says that UAS MUST copy RR headers into the response, and 
>this only makes sense in a 200 response, so:

See above. All User Agent implementations should include Record-Route and 
Contact in 1xx response just like they would be included in a 2xx response. I 
don't see any reason not to, and not including them breaks things.
[RL] RR is the same as Contact case above...

Note that the Record-Route headers and Contact header in a 2xx final response 
will replace the route set and remote target of the dialog from the 1xx 
response. But they usually will be the same.
[RL] Contact in 2xx might not replace remote target of early dialog, if they 
are different.

13.2.2.4 2xx Responses
   If the dialog identifier in the 2xx response matches the dialog
   identifier of an existing dialog, the dialog MUST be transitioned to
   the "confirmed" state, and the route set for the dialog MUST be
   recomputed based on the 2xx response using the procedures of Section
   12.2.1.2.  Otherwise, a new dialog in the "confirmed" state MUST be
   constructed using the procedures of Section 12.1.2.

      Note that the ***only*** piece of state that is recomputed is the route
      set.  Other pieces of state such as the highest sequence numbers
      (remote and local) sent within the dialog are not recomputed.


-Rockson

_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to