[OpenSIPS-Users] parallel forking and CANCEL/BYE
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Thu Oct 22 02:34:03 CEST 2009
Hi Uwe,
as I understand from you, from end devices (GW, as1 and as2) everything
work ok, but the dialog state on opensips is not properly kept??
Regards,
Bogdan
Uwe Kastens wrote:
> Hello Bogdan,
>
> Now we changed the behaviour of the UAC. One of them will send a BYE and
> this is relayed to the PSTN GW which drops the call, since opensips will
> not handle the BYE locally. So loose_route is done and the BYE is
> relayed to the PSTN GW.
>
> The following is happening:
>
> 1) INVITE from PSTN GW
> 2) parallel forking to ast1 and ast2 (branches z9hG4bK51f6.9afa91c3.1
> and z9hG4bK51f6.9afa91c3.0)
> 3) ast1 sends an 200 OK (branch z9hG4bK51f6.9afa91c3.0)
> 4) opensips sends an cancel to ast2 (branch z9hG4bK51f6.9afa91c3.1)
> 5) opensips receives the 200 OK from ast1 and sends an ACK (branch is
> changing here to z9hG4bK51f6.9afa91c3.3)
> 6) opensips receives 200 OK from ast2 from the INVITE (branch
> z9hG4bK51f6.9afa91c3.1)and sends an ACK (branch is changing to
> z9hG4bK51f6.9afa91c3.3)
> 7) opensips reives 200 OK from ast2 for the cancel request ( branch
> z9hG4bK51f6.9afa91c3.1)
> 8) opensips receives BYE from ast2 with branch z9hG4bK40d1af5d
> 9) opensips is doing loose_route and sends the BYE to the PSTN GW
>
>
> The only thing I could see on the logs is:
>
> WARNING:dialog:dlg_onroute: tight matching failed for BYE with
> callid='393105a419950c1f265f298914662393 at 10.20.30.100'/46,
> ftag='as63949c6e'/10, ttag='as0d1597ca'/10 and direction=0
> Oct 21 09:09:15 asne02 /usr/sbin/opensips[15615]:
> WARNING:dialog:dlg_onroute: dialog identification elements are
> callid='393105a419950c1f265f298914662393 at 10.20.30.100'/46, caller
> tag='as0d1597ca'/10, callee tag='as79debd51'/10
>
> Why is the opensips not handling the BYE locally and only closing one
> branch?
>
> BR
>
> UWe
>
>
> Bogdan-Andrei Iancu schrieb:
>
>> Hi Uwe,
>>
>> Uwe Kastens wrote:
>>
>>> Hi Bogdan,
>>>
>>>
>>>
>>>> So actually both legs do send 200 OK (but one faster than the
>>>> other)......so there is kind on race between the 200 OK from the slow
>>>> branch and the CANCEL from OpenSIPS...is this the case?
>>>>
>>>>
>>> Exactly
>>>
>>>
>>>
>>>> If so, the UAS will simply reply with negative reply to CANCEL (decline
>>>> it) and opensips (for INVITE transaction) will not close the second
>>>> branch as there is a 200 OK (and not a 487) received ....RFC3261 says
>>>> that a proxy must send all 200 OK (for a call), even if more than one,
>>>> to the UAC - the UAC is the one who will decide what branch to keep and
>>>> it will fire a BYE for the other branch.
>>>>
>>>>
>>>>
>>> Could this explan, why only the 2nd Node will get the BYE, if the call
>>> is released "behind" the opensips?
>>>
>>>
>> yes, because the caller will hung up only one of the callee branch, so
>> the BYE will go to only one of them. The other branch will remain up and
>> will be the ongoing call.
>>
>> Regards,
>> Bogdan
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>
>
>
More information about the Users
mailing list