> 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).
> 
> 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?

There are several options; none are perfect.

1) You can keep your B2BUA connection to non answered dialog open longer for 
such race conditions.  Similar to your PRACK question, you will also need to 
decide what to do if receive an INVITE's 2xx on this other dialog.

2) If B2BUA knows how to build the PRACK's 200 correctly, it builds and sends 
it.  Since the PRACK can contain an offer, see RFC 6337 for the silly 
complications introduced by interpreting RFC 3262 as though only 2xx and 481 
are valid responses.

3) If unsure how to build the PRACK's 200 correctly, B2BUA can wait until 2xx's 
ACK is received before attempting to complete the PRACK transaction on the 
other dialog.  Hopefully by that time, the caller's SIP stack won't choke and 
release the call if it receives a PRACK final response (200 or something else) 
that it doesn't like.

4) Since RFC 4320 deprecated 408 for non-INVITE, ignore the PRACK's and cause 
UAC to uselessly retry, again, again, et cetera.  Depending upon your RFC 
3261/3262 interpretation, you may decide to send 481 after some delay.

5) Send a PRACK failure response.  Hopefully the caller's SIP stack will allow 
it or at least only release the dialog instead of the call.  Depending upon the 
selected failure response (and caller device's RFC 3262 interpretation), it may 
or may not be adequate to avoid subsequently receiving another PRACK with 
higher cseq.  


_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to