[OpenSIPS-Users] serialize_branches() and timeouts
Alexander Kogan
akogan at 5gfuture.com
Wed Jun 28 07:13:32 UTC 2023
Hi,
I got the point. Nevertheless, isn't it a good idea to have a way to
discard messages of branches that have already been timed out instead of
reanimating them? E.g. t_check() could return -2 in reply_received(), or
drop() action could be allowed for 200...
Best regards,
Alexander Kogan,
Director of R&D
5g Future
http://5gfuture.com
On 28.06.2023 10:37, Bogdan-Andrei Iancu wrote:
> Hi Alexander,
>
> According to RFC3261, there is noting a proxy should/must do about a
> received 200 OK rather than sending further to the caller (even if the
> 200 OK is received on an old branch). Basically, if for whatever
> reasons you end up getting 200 OK from several branches of the same
> transaction, you need to forward them all to caller - why? as in SIP,
> once a 200 OK was fired by a callee device, there is no signaling
> /mechanism available to "cancel"/"reject"/"discard" that it. The only
> way to handle "unwanted" 200 OK is to accept it, ack it and then send
> a BYE for it.
> Now, as a proxy does not have the necessary "logic" to decide which
> 200 OK to keep and which to BYE, there is nothing to be done than
> "moving" this decision to the caller - so pass all the 200 OK to
> caller and let it decide which to keep or not.
>
> Regards,
>
> Bogdan-Andrei Iancu
>
> OpenSIPS Founder and Developer
> https://www.opensips-solutions.com
> https://www.siphub.com
>
> On 6/27/23 5:59 PM, Alexander Kogan wrote:
>> Hello,
>>
>> I've got such a call flow:
>>
>> Client OpenSIPS
>> |--INVITE-->|
>> |<--100-----| Vendor1
>> | |--INVITE-->|
>> | |--INVITE-->|
>> | |--INVITE-->|
>> | | | Vendor2
>> | |--INVITE------------- >|
>> | |<--100-----------------|
>> | |<--180-----------------|
>> |<--180-----| |
>> | |<--200-----------------|
>> |<--200-----| |
>> | | |
>> | |<--200-----| |
>> |<--200-----| |
>> | | | |
>>
>> The first branch was timed out and we switched up to the next one. A
>> bit later we received 200 OK from the first one. The question is -
>> how to avoid passing 200 to the first leg? drop() doesn't work for
>> final responses. I also can't use t_cancel_branches() because it
>> works in onreply_route only which is not called in case of timeout....
>>
>
More information about the Users
mailing list