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
