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

Reply via email to