However, my reading of the early media RFC (3960)'s discussion of forking is that it's generally just not considered a good idea to do 183+SDP with forking. Am I wrong?
Alex Balashov wrote: > > Iñaki, > > It would seem to me that it is incumbent upon the proxy to insulate the > B2BUA from the consequences of parallel forking by not creating such a > condition, since forking behaviour is a feature that is a defined and > specified as a characteristic of proxies rather than B2BUAs. The RFC > does not speak to "forking B2BUAs." :-) > > In other words, it seems to me that the best solution from an abstract > standpoint would be to say that the proxy shouldn't be forwarding the > second 183 and should CANCEL that branch on its side, since the early > state is also a kind of "answer." That way the B2BUA gets only one > 183+SDP. > > The trouble is that this idea is not supported by the RFC because a 183 > is still a provisional response, not a final one, and the governing rule > regarding provisional responses is that they must be forwarded to the > originator. > > RFC 3261 says nothing about a special status of a 183. > > I think one of the things Paul Kyzivat said is probably the most > reasonable conclusion: "If it wants to be less transparent, it > can just hold all the other offers until the call outcome is known and > then reinvite with the winner." This sounds like something that should > be up to the proxy - same as 200 OK - but is expressly and very much not > up to the proxy per the RFC's model. > > Iñaki Baz Castillo wrote: > >> Hi, I'm reporting a common error in some transparent B2BUA I'm >> testing. The error is: >> >> - The B2BUA receives a request from leg_A and generates a request in >> leg_B. >> >> - leg_B arrives to a proxy that does parallel forking. >> >> - The B2BUA receives various provisional responses (183) with >> different To_tag due to parallel forking. >> >> - The B2BUA generates a 183 response in leg_A for each 183 in leg_B, >> but it uses an *unique and same* To_tag in both 183 responses in leg_A >> (but they have different SDP). >> >> >> I'm trying to demostrate that the above behaviour is incorrect since: >> - There are two different early-dialogs between B2BUA and leg_B. >> - There are just *one* early-dialog between caller (leg_A) and B2BUA >> (since all the replies from B2BUA in leg_A have the same To_tag). >> - The caller (UAC) will ignore any SDP after the first 183 containing >> a SDP, even if a 200 OK arrives with a different SDP (since the To_tag >> would be the same, so just the first SDP would be considered). >> >> I think it's clearly specified in RFC 3261 (well, not so clearly): >> >> ------------------------------------------------------- >> 13.2.1 Creating the Initial INVITE >> >> o If the initial offer is in an INVITE, the answer MUST be in a >> reliable non-failure message from UAS back to UAC which is >> correlated to that INVITE. For this specification, that is >> only the final 2xx response to that INVITE. That same exact >> answer MAY also be placed in any provisional responses sent >> prior to the answer. The UAC MUST treat the first session >> description it receives as the answer, and MUST ignore any >> session descriptions in subsequent responses to the initial >> INVITE. >> >> [...] >> >> Concretely, the above rules specify two exchanges for UAs compliant >> to this specification alone - the offer is in the INVITE, and the >> answer in the 2xx (and possibly in a 1xx as well, with the *same* >> value), or the offer is in the 2xx [...] >> ------------------------------------------------------- >> >> >> Could you please help me by confirming, detailing and explaining it? >> Reall thanks a lot. >> >> > > -- Alex Balashov Evariste Systems Web : http://www.evaristesys.com/ Tel : (+1) (678) 954-0670 Direct : (+1) (678) 954-0671 Mobile : (+1) (706) 338-8599 _______________________________________________ Sip-implementors mailing list Sip-implementors@lists.cs.columbia.edu https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors