Subject: RE: [Sip] 482 handling by proxies

From: Jonathan Rosenberg <[email-masked]>
Date: Wed, 21 Nov 2001 02:21:21 -0500

> -----Original Message-----
> From: Christer Holmberg [mailto:[email-masked]]
> Sent: Wednesday, November 21, 2001 1:35 AM
> To: Jonathan Rosenberg
> Cc: 'Fairlie-Cuninghame, Robert'; Gonzalo Camarillo; Bob Penfield;
> [email-masked]
> Subject: Re: [Sip] 482 handling by proxies
> 
> 
> 
> Hi,
> 
> Assume the proxy sends a non-2xx response to the UAC, and then it
> terminates all (if any) pending legs. So, it sends CANCEL. 
> But, if there
> is a race condition the proxy MAY still get a 2xx final response from
> one or more of the legs. What is it supposed to do now? Since it has
> already sent a non-2xx final response to the UAC it COULD of course
> forward the other 2xx final responses to the UAC too - but isn't that
> the situation we want to prevent?

Yes.

> 
> Another option would be that the proxy ACK/BYE, but I think we have
> earlier agreed that a proxy won't do that.
> 
> A third option is that the proxy terminates the pending legs BEFORE it
> sends the final response to the UAC. In that case, IF 2xx final
> responses are received for the legs it tries to CANCEL those can still
> be forwarded to the UAC (since the CANCEL will not affect the 
> call state
> in the UAS that sent the 2xx response before it received the CANCEL).

Perhaps you didn't read my mail; I was clarifying for folks that this is
whats in bis-05.

-Jonathan R.

---
Jonathan D. Rosenberg, Ph.D.                72 Eagle Rock Ave.
Chief Scientist                             First Floor
dynamicsoft                                 East Hanover, NJ 07936
[email-masked]                     FAX:   (973) 952-5050
http://www.jdrosen.net                      PHONE: (973) 952-5000
http://www.dynamicsoft.com

> > One of the things that has changed in bis-05 is that a 
> proxy is generally
> > not supposed to send a non-2xx final response upstream 
> unless its gotten
> > final responses to all requests that it proxied. This is to 
> prevent the
> > condition where a proxy forwards a non-2xx upstream, only 
> to receive a 2xx
> > on a pending branch. The poor UA would have to handle this 
> awful case where
> > it gets a non-2xx followed by a 2xx.
> > 
> > So, if a proxy wants to terminate a pending transaction, it 
> should follow
> > Robert's second alternative - CANCEL its pending branches 
> and then send a
> > 408 or 487 upstream once all pending branches have 
> responded. It should not
> > follow his first alternative, where it simply sends the 408 and then
> > CANCELs.
> 

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

---

From: Christer Holmberg <[email-masked]>
Date: Wed, 21 Nov 2001 09:45:34 +0200

Hi,

>>call state in the UAS that sent the 2xx response before it received the CANCEL).
> 

I DID read your mail. It says that the proxy shall terminate all legs
and then send 408 or 487 upstream once all pending branches has
responded, and that works fine as long as there is no CANCEL/final
response race condition. 

However, it still think it should be mentioned that even if the proxy
sends CANCEL it MAY still receive final responses which are "better"
than 408 or 487, so that the proxy will eventually forward one or more
of those final responses to the UAC - and NOT 408 or 487.

Regards,

Christer Holmberg
Ericsson Finland