Using your diagram below as a reference:
  Let D1 be the dialog between UA1 and B2B.
  Let D1.T1 be the re-INVITE transaction between UA1 and B2B.
  Let D2 be the dialog between B2B and UA2.
  Let D2.T1 be the re-INVITE transaction between UA2 and B2B.

In a previous email, I suggested that B2B might send a 491 Request
Pending in response to D2.T1.

It is true, as you suggest in your most recent email, that the 491 is
intended to resolve a race condition between two re-INVITE
transactions within the same dialog. So, my suggestion takes some
creative license with respect to the semantics of the response code.
But consider the following:

a) The 491 shall be sent by the UAS transaction user (TU) layer.
b) In this case, the TU is the B2BUA logic.
c) The purpose of a B2BUA is to bind the two independent dialogs (D1 &
D2) together in some way that makes sense to the application being
implemented.
d) The B2BUA logic recognizes the conflict between D2.T1 and D1.T1
(otherwise you wouldn't have asked your original question).

IMO, it's reasonable for B2B to tie D2.T1 and D1.T1 together. The more
significant part of my original suggestion was to start a timer. If
B2B receives the ACK and D1.T1 completes, then B2B can continue
processing D2.T1. If the timer expires before it gets the ACK, then
B2B sends an error response D2.T1.

The error response could be a 491 Request Pending. It is, perhaps, a
creative use of the response code because, as we said, the pending
request is actually within D1. But UA2 doesn't need to know that and I
don't see that it violates any protocol rules or causes any problems
(again, the list can correct me if I'm wrong). So it sounds reasonable
to me.

Or, the error response could be a 500 Server Internal Error. You don't
know when or if you're going to get the ACK, though, so any value for
the Retry-After header would have to be a blind guess.

I don't think the choice of error code is that significant. I'm sure
you'll figure something out.

--
Gary Cote
Award Solutions, Inc.
www.awardsolutions.com



On 10/11/06, Sumin Seo <[EMAIL PROTECTED]> wrote:
>
>                           B2B
> UA1 <------------> UAS|UAC <--------------> UA2
> |----------------- session established ------------|
> |        re-INVITE         |                             |
> |----------------------------->|                             |
> |    error response      |                             |
> |<-----------------------------|                             |
> |                               |        re-INVITE       |
> |                               |<-------------------------- |
>
> As you see, there is pending request beween UA1 and UAS of B2B, but in
> view of UA2, there is no pending request between UAC of B2B and UA2 .
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to