Hello,
In our system we've encountered the following situation.
There's a Kamailio proxy and a few REGISTER'ed devices behind the proxy. When
there's an INVITE to these multiple devices, two of them simultaneously answer the
call. Kamailio proxy accepts the first 200 OK from one of the devices and tries to CANCEL
all other branches. But the second 200 OK device have already responded OK and doesn't
acknowledge the CANCEL. So, there's now one established dialog with media, and another
"established" one neither having media nor being correctly terminated.
Looks like the similar scenario is described in section 3.1.2 of RFC 5407 (Example Call
Flows of Race Conditions in the Session Initiation Protocol (SIP)).
Is it possible to mitigate such scenarios in a Kamailio proxy? E.g., is it possible to
send an additional BYE to these CANCEL'led branches?
In current configuration, Kamailio proxy retrieves contacts with registrar:lookup() and
does parallel forking with tm:t_relay().