I guess we should not mix CANCEL handling with PRACK/UPDATE. CANCEL is send to all the forked brnaches of INVITE. PRACK/UPDATE is sent only on one particular forked INVITE branch. Therefore PRACK/UPDATE have to be send using Request-Uri constructed from 18x Contact and with Route set constructed from the Record-Route set read in reverse order of 18x. This is what IMS call-flow says.
~Vikram On 3/29/07, Singh, Indresh (SNL US) <[EMAIL PROTECTED]> wrote: > I think the section 12.1.2 of RFC-3261 is appropriate for our discussion > and as per that 18x response with a tag will establish a dialog and thus > should update the remote-target-uri. > > The previous reference for 200 OK being the only response to update the > remote-target-uri was applicable for dialogs which are already > established. > It seems our friend Bob, Penfield has already clarified this :) > > Regards, > > Indresh K Singh > > > > 12.1.2 UAC Behavior > > When a UAC sends a request that can establish a dialog (such as an > INVITE) it MUST provide a SIP or SIPS URI with global scope (i.e., > the same SIP URI can be used in messages outside this dialog) in the > Contact header field of the request. If the request has a Request- > URI or a topmost Route header field value with a SIPS URI, the > Contact header field MUST contain a SIPS URI. > > > > Rosenberg, et. al. Standards Track [Page 71] > > RFC 3261 SIP: Session Initiation Protocol June 2002 > > > When a UAC receives a response that establishes a dialog, it > constructs the state of the dialog. This state MUST be maintained > for the duration of the dialog. > > If the request was sent over TLS, and the Request-URI contained a > SIPS URI, the "secure" flag is set to TRUE. > > The route set MUST be set to the list of URIs in the Record-Route > header field from the response, taken in reverse order and preserving > all URI parameters. If no Record-Route header field is present in > the response, the route set MUST be set to the empty set. This route > set, even if empty, overrides any pre-existing route set for future > requests in this dialog. The remote target MUST be set to the URI > from the Contact header field of the response. > > -----Original Message----- > From: Singh, Indresh (SNL US) > Sent: Wednesday, March 28, 2007 7:19 PM > To: 'Jerry Yin'; [EMAIL PROTECTED]; [email protected] > Subject: RE: [Sip-implementors] SIP Contact header > > Good discussion. > > But I would differ from the intepretation of below section of RFC-3262 > w.r.t to remoteTargetURI updation on the UAC side. RFC-3262 does not > specifically suggest anywhere that after reception of 18x responses > which would create early dialog should be saved in the dialog request > URI. > > In absence of any such text in RFC-3262 we have to fall back to the > recommendation of RFC-3261 ( RFC-3261 mentions that it's recommendation > can be over-written in specific RFCs, but here there is no such > over-writing of recommendation of base RFC ) > > Also from the perspective of treating PRACK as a non-INVITE requests > within dialog. On the UAS side receiving the PRACK with different > contact, this would also not cause any change in remote-target-uri. > Remote Target URI can only be refreshed by a re-INVITE only. > > Also if we think about the UPDATE withour PRACK and UPDATE with PRACK > being sent differently. The UAC then would have to check the i/c 18X > response to see if PRACK is supported by UAS and then use the contact > header to refresh target URI. I have not seen any such recommendation. > > So I still think the contact header in 18X response should be not used > to build the remote-target-uri ( with/without PRACK ) unless ofcourse > some section of RFC-3261/3262 does suggest so. I think this is done to > be able to send CANCEL request to the same destination as original URI. > If the remote-target-uri is updated with 18x contact, then CANCEL R-URI > can not be built using dialog remote-target-uri information. That is > what my understanding suggest :) > > > > But I also have to confess that if we think from media-exchange > perspective INVITE-200OK-ACK where ACK can go to different contact as > specified in 200 OK. INVITE-18X-PRACK. Prack is playing the same role > for 18X as an ACK for 200OK, so why it should not be accorded same > benefit as 200 OK w.r.t to updation of remote-target-uri. I do not know. > It may be because of the CANCEL R-URI as I pointed above .... > > Do let me know if we have additional information which would suggest > that 18x contact should be used to update the remote-target-uri of a > dialog in some other reference documents. > > Regards, > > Indresh K Singh > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Jerry Yin > Sent: Wednesday, March 28, 2007 4:02 PM > To: [EMAIL PROTECTED]; [email protected] > Subject: Re: [Sip-implementors] SIP Contact header > > Please see the in-line comments. > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] Behalf Of Yong Xin > > Sent: Wednesday, March 28, 2007 1:34 PM > > To: [email protected] > > Subject: [Sip-implementors] SIP Contact header > > > > > > Hi, > > > > As per RFC 3261, the UAS MUST add a Contact header field to > > the 2xx response to the INVITE. The Contact header field > > contains an address where the UAS would like to be contacted > > for subsequent requests in the dialog (which includes the > > ACK for a 2xx response in the case of an INVITE). > > > > My questions are: > > > > 1) Would the ACK for a non-2xx response be using this contact > > address? (I assume not. My understanding is that UAC must > > send ACK for a non-2xx response using the same destination > > address as the INVITE) > > > > No. The none-2xx response does not create a dialog, therefore, the ACK > will > be sent to the same url as Invite request. > > > 2) How about PRACK or UPDATE request which is sent from UAC > > to UAS before the dialog is established (i.e.: 200 ok to > > INVITE is not sent by UAS yet)? (I assume same as the ACK > > for non-200 response). > > > > When you send PRACK, it means you have received a reliable 1xx response, > which will create an early dialog. As someone said, early dialog is a > dialog. Therefore, the PRACK will be sent to the "contact" address in > 1xx > response. Since you shouldn't send "UPDATE" before the PRACK, therefore > the > UPDATE is also sent to the contact address in the early dialog. That's > my > understanding. > > As to the UPDATE without PRACK, I assume it should be sent to the same > address as request url, since there's no (early) dialog is created. > > > Your comments are appreciated. > > > > Thanks, > > Yong > > > > _______________________________________________ > > Sip-implementors mailing list > > [email protected] > > https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors > > > > _______________________________________________ > Sip-implementors mailing list > [email protected] > https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors > > _______________________________________________ > Sip-implementors mailing list > [email protected] > https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors > _______________________________________________ Sip-implementors mailing list [email protected] https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
