Hi Team,

I've a situation,
Customer A -> SBC01 (XYZ vendor) -> SBC02 (XYZ Vendor) -> Core

Customer A sends an invite to SBC01, which reaches to Core. While  Core sends a 
200 OK & before it reaches the Customer A, Customer A had sent a cancel.
Please see the attached pic.

Now the situation is,
1; Customer A sends a cancel to SBC01;
2; SBC01 sends 200 OK back to customer A;
3; SBC01 passes that CANCEL to SBC02;
3; SBC02 sends the 200 OK invite to SBC01.
4; SBC02 sends the 200 OK for cancel to SBC01

Technically, SBC02 has sent a 200OK to invite before it sends 200OK to cancel 
(towards SBC01)
SBC01 has received CANCEL request from A and 200 Ok'd it; Also it had sent 
CANCEL towards SBC02 as well, however it received 200 OK (INVITE) before 200OK 
(CANCEL).

What should be the behavior of SBC01? SBC02? And Customer A?

************************************************************************************************************************************************************************************************
This is my understanding,

SBC01, it has two roles,
1)      UAS ,While it talks with Customer A. [Case 1]
2)      UAC ,while it talks with SBC02 [Case 2]

Case 1/ SBC01 as UAS - Since SBC01 is "receiving CANCEL & responding 200 OK for 
the cancel" it shouldn't have passed 200OK for the invite (which it received 
from SBC02) towards Customer A;
instead, the behavior should be,
A)      SBC01 should send a 200OK for CANCEL to Customer A(it's doing it)
B)      SBC01 should NOT forward the 200 OK for invite to Customer.
C)      It should send 487 (request terminated) to Customer A.

Case 2/ it's a typical race condition. Where SBC01 has sent a CANCEL to SBC01, 
however SBC02 has send 200OK for invite before sending a 200OK for CANCEL. 
Means, SBC01 has received 200OK for invite first; can be considered as a race 
condition. How to behave in a race condition is mentioned in RFC 5407 (click 
the link below )
https://tools.ietf.org/html/rfc5407#page-13<https://tools.ietf.org/html/rfc5407>
Now, the behavior of SBC01 towards SBC02 should have been,
A)      It should send an ACK to SBC for the 200OK for Invite.
B)      It should send BYE Immediately to SBC (just after ACK).


Thanks,
Sylvester


_______________________________________________
Sip-implementors mailing list
Sip-implementors@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to