Subject: RE: [SIP] Mid-Call Redirects with a Route

From: Jonathan Rosenberg <[email-masked]>
Date: Tue, 10 Oct 2000 01:58:29 -0400

Yuck.

See comments below.

> -----Original Message-----
> From: Billy Biggs [mailto:[email-masked]]
> Sent: Monday, October 09, 2000 7:36 PM
> To: SIP Mailing List
> Subject: [SIP] Mid-Call Redirects with a Route
> 
> 
>   Hi,
> 
>   If I get redirected (say a 302) on a re-INVITE or BYE request on an
> active call-leg end, and the call-leg has a Route, what do I do?

This should really never happen. I don't think there is any happy solution
in this case. Is there a specific scenario you were thinking of?

> 
>   My possible suggestions:
> 
>   a) Use the Record-Route and Contact from the redirect response to
>      build a Route header for my new transaction.
> 
>      This seems inconsistent, unless I also honor the 
> Record-Route on a
>      300-class response to an initial INVITE.  But hey, maybe I should
>      do that too?
> 
>   b) Place the Contact at the end of the current Route list, 
> and hope it
>      was the last guy who redirected me.  This scares me.
> 
>   c) Use the Contact as the Request-URI, keep the Route the same, and
>      mess things up completely.  Definitely broken.
> 
>   d) Drop the Route completely and hope this never happens.
> 
>   Regarding (a), am I correct in assuming that with every transaction
> the Route is rebuilt completely, not just a possible update of the
> Contact address at the end?

No, thats not correct. Since its currently only for the initial INVITE, it
would not be backwards compatible to mandate it for each transaction. The
latest bis says proxies should insert it, but UAs shouldn't use it for a new
Route (only the Contact can change after call is setup). Seems useless, but
it can help if there is a crash and restart.

Anyway, the only reasonable thing to do in this case would be (d). Although,
as I said, I can't imagine when this would ever happen.

-Jonathan R.

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

_______________________________________________
SIP mailing list
[email-masked]
http://lists.bell-labs.com/mailman/listinfo/sip

---

From: Billy Biggs <[email-masked]>
Date: Tue, 10 Oct 2000 08:34:28 -0500

Jonathan Rosenberg ([email-masked]):

> >   If I get redirected (say a 302) on a re-INVITE or BYE request on
> > an active call-leg end, and the call-leg has a Route, what do I
> > do?
> 
> This should really never happen. I don't think there is any happy
> solution in this case. Is there a specific scenario you were thinking
> of?

  Sure.

  Say I'm a client which always uses a Contact of its globally-visible
URI, and the URI is that of a redirect server, and the calling party has
a Record-Route'ing outbound proxy.

  I guess in that scenario I'm also assuming that redirect servers (or
at least this one) will proxy ACKs.  Is that true?  If not, maybe this
is a ridiculous case.

  I definitely agree that this should never happen otherwise, unless a
proxy in the middle is reconfigured mid-call, and then its the proxy's
fault for not keeping state.  Ouch.

> No, thats not correct. Since its currently only for the initial
> INVITE, it would not be backwards compatible to mandate it for each
> transaction. The latest bis says proxies should insert it, but UAs
> shouldn't use it for a new Route (only the Contact can change after
> call is setup). Seems useless, but it can help if there is a crash and
> restart.

  Even more useless since the UA has to remember tags in the case of a
restart.  I guess it does help somewhat for debugging, or if someone is
doing an "evil Route hack" on the initial transaction of a call-leg.

  But regardless, thanks for the clarification. :)

-- 
Billy Biggs, 3Com              [email-masked]
http://www.div8.net/billy/          [email-masked]

---

From: Billy Biggs <[email-masked]>
Date: Fri, 13 Oct 2000 18:26:19 -0500

> solution in this case. Is there a specific scenario you were thinking

  The text in the description of a 305 response seems to imply that it
will happen mid-call ("The recipient is expected to repeat _this_
_single_request_ via the proxy").  This scares me.

  I think it should also be specified in the bis draft that clients MUST
NOT list the address of a redirect server in a 200 response to an
INVITE.  The current text says that clients MUST put the address they
are most directly reachable at, but indicates that this may be a proxy
if they are behind a firewall.

  I'd argue that clients might be tempted to put in URIs that they
have successfully registered at as their Contact in order to help
promote address safety if they are behind a NAT.  But if this
registration is at a redirect server, things will break.

  Another scenario is if a proxy gets reconfigured mid-call to be a
redirect server, and this proxy is in the route.

  I really really really do not want to have to map Routes and Contact
addresses to CSeq numbers.  Is the solution to just hope this never ever
happens?

-- 
Billy Biggs, 3Com               Email: [email-masked]
http://www.div8.net/billy/      Phone: [email-masked]