On 7/16/12 3:22 PM, Kumar, Puneet (Puneet) wrote:
> Thanks Paul,
>
> RFC 3262 says:
>
> 3 UAS Behavior
> .......
> After the first reliable provisional response for a request has been
> acknowledged, the UAS MAY send additional reliable provisional
> responses. The UAS MUST NOT send a second reliable provisional
> response until the first is acknowledged. After the first, it is
> RECOMMENDED that the UAS not send an additional reliable provisional
> response until the previous is acknowledged. The first reliable
> provisional response receives special treatment because it conveys
> the initial sequence number. If additional reliable provisional
> responses were sent before the first was acknowledged, the UAS could
> not be certain these were received in order.
>
> Hence I thought B2BUA can't send 200OK on dialog f1+c1+t1 because PRACK
> is pending on dialog f1+c1+t11.
> Since both dialogs are part of same session I think above statement will
> hold true.
>
> Am I correct?
The above applies to a single dialog. It didn't envision the case of a
UA responding on two dialogs. Your B2BUA is responding using two
different dialogs. (This is equivalent to the request having been forked
by a proxy, to two different UAs.) In effect to-tag t1 and to-tag t11
identify two different UAs.
Thanks,
Paul
> Thanks,
> Puneet
>
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of
> Paul Kyzivat
> Sent: Monday, July 16, 2012 9:29 PM
> To: [email protected]
> Subject: Re: [Sip-implementors] PRACK + Active Forking
>
> I see that Brett already answered, and I have no argument with is reply.
> But here are some thoughts of mine.
>
> On 7/16/12 3:56 AM, Kumar, Puneet (Puneet) wrote:
>> Sending again with proper formatting.
>> -------
>> Hi All,
>>
>> Let's assume a scenario where B2BUA forks the incoming call for a user
>> to two UA's, UA2& UA3.
>>
>> SIP message flow for this is:
>>
>> UA1 B2BUA UA2 UA3
>> ---------INVITE---------->
>> (Call-ID=c1)
>> (From tag=f1)
>> ----------INVITE-------->
>> (Call-ID=c2)
>> (From tag=f2)
>> ------------------INVITE------------------>
>>
>> (Call-ID=c3)
>> (From tag=f3)
>> <-----------------180----------------------
>> (Call-ID=c3)
>> (From tag=f3)
>> (To tag=t3)
>> <----------180------------
>> (Call-ID=c1)
>> (From tag=f1)
>> (To tag=t1)
>> <---------180------------
>> (Call-ID=c2)
>> (From tag=f2)
>> (To tag=t2)
>> (Require=100rel)
>> <----------180------------
>> (Call-ID=c1)
>> (From tag=f1)
>> (To tag=t11)
>> (Require=100rel)
>> <-----------------200----------------------
>> (Call-ID=c3)
>> (From tag=f3)
>> (To tag=t3)
>> --------CANCEL--------->
>> (Call-ID=c2)
>> (From tag=f2)
>> (To tag=t2)
>> <--------200--------------
>>
>> As per our internal design after receiving final response from UA3,
>> B2BUA will CANCEL the call towards UA2.
>> But we can't send 200OK to UA1 as a PRACK is pending on
>> dialog(c1+f1+t11).
>
> Why? You have two early dialogs going - f1+c1+t1 and f1+c1+t11. You can
> send a 200 on f1+c1+t1.
>
>> Thus I have few queries on it:
>> 1) Can B2BUA send a CANCEL to UA2 before PRACK transaction is over?
>
> Yes.
>
>> 2) If answer to above question is "yes" then how can B2BUA send 200OK
>> for dialog(c1+f1+t1) to UA1?
>
> Just do it. The two early dialogs are independent of one another.
>
> UA1 still owes a PRACK on f1+c1+t11, but that is a separate issue. The
> issues that remain are:
>
> - the B2BUA keeping enough state to handle the PRACK when it arrives.
>
> - the B2BUA sending a PRACK to UA2 for the 180 already received.
>
> - in spite of the CANCEL, UA2 could still send additional 1xx and/or
> a 2xx response. The B2BUA must be prepared to deal with these.
>
> The fundamental implementation decision to make here is whether to
> continue to couple f1+c1+t11 with f2+c2+t2, or to manage them
> independently. You can make either of them work. And either one will
> require the B2BUA to keep some state.s
>
> Thanks,
> Paul
>
>> Are there any alternate& better way to handle this call flow?
>>
>> Thanks,
>> Puneet
>>
>>
>> _______________________________________________
>> Sip-implementors mailing list
>> [email protected]
>> https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>>
>
> _______________________________________________
> Sip-implementors mailing list
> [email protected]
> https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors