[OpenSIPS-Users] Cancel branch before failover on timeout
bogdan at opensips.org
Mon Jul 8 16:05:13 CEST 2013
I never experienced such race (with multiple 200 oks on different
branches)....But depending on what kind of accounting you do:
- transaction based = you will get 2 START records and 2 STOP records,
but with different TO tags....
- cdr based = you will get the values of the last 200 OK (which will
overwrite the values of the first one)..
I guess the ACC module was never designed to deal with such scenarios.
OpenSIPS Founder and Developer
On 07/06/2013 02:25 AM, Ronald Cepres wrote:
> Understood, and thanks for the info.
> However, I have some concerns with regards to the resulting CDR using
> the acc and drouting modules. I think if both GWs sent 200 OK at the
> same time, it would result in a CDR with the values of AVPs specified
> by carrier_id_avp and gw_id_avp drouting parameters set only to GW2.
> Also, if GW1 is the last GW in the gwlist and this type of race
> condition happens, the value of the AVPs will be set to blank.
> On Fri, Jul 5, 2013 at 2:15 AM, Bogdan-Andrei Iancu
> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
> Hello Ronald,
> If the first GW sent any reply before the timeout, than OpenSIPS
> will cancel it before hitting the failure route. If no reply at
> all sent by GW1, OpenSIPS will hit the failure route on timeout
> without canceling. If after this point (call send to GW2) first GW
> sends a reply :
> 1) if a provisional reply (<200), it will be canceled on the spot
> 2) if a 200 ok reply -> it will be accepted and fwd to calling
> a) if the GW2 did not send a 200 OK, it will be canceled
> b) if GW2 also sent a 200 OK in the same time, both 200 OK
> will be sent to calling device and it that device will decide what
> call to keep
> Bogdan-Andrei Iancu
> OpenSIPS Founder and Developer
> On 07/04/2013 07:41 PM, Ronald Cepres wrote:
>> Thanks for the informative reply.
>> What I really want to solve is a problem I encounter when the
>> first GW doesnt respond after a defined timeout then Opensips
>> does failover to next GW. A few seconds after the call is routed
>> to second GW, the first GW responds with 200 OK, which may cause
>> problems. It seems that the first GW has a slow response time.
>> The solution I am thinking of to prevent this is to send a cancel
>> to the first GW before doing failover to next gateway. Does this
>> make sense or is there a better solution?
>> On Jul 4, 2013 11:58 PM, "Bogdan-Andrei Iancu"
>> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>> Hello Ronald,
>> When you hit the failure route, there is no ongoing branch
>> left (doesn't matter how many you previously created) - so
>> you should not worry about this.
>> By SIP definition, a transaction fails (and OpenSIPS gets
>> into failure route) only when all branches failed.
>> Bogdan-Andrei Iancu
>> OpenSIPS Founder and Developer
>> On 07/03/2013 10:43 PM, Ronald Cepres wrote:
>>> Hi all,
>>> Is there a way I can cancel a pending branch before doing a
>>> fail-over to next gateway (due to timeout from previous
>>> gateway)? This way I can make sure that the call to the
>>> previous gateway will not go through anymore after fail-over
>>> to the next gateway, thus preventing us "double-charged"
>>> situations if the previous gateway and the new gateway both
>>> answered the call.
>>> Thanks in advance.
>>> Users mailing list
>>> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
> Ronald Cepres
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Users