Hi Ronald, 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. Regards, Bogdan-Andrei Iancu OpenSIPS Founder and Developer http://www.opensips-solutions.com On 07/06/2013 02:25 AM, Ronald Cepres wrote: > Bogdan, > > 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 > <[email protected] <mailto:[email protected]>> 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 > device > 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 > > Regards, > > Bogdan-Andrei Iancu > OpenSIPS Founder and Developer > http://www.opensips-solutions.com > > > On 07/04/2013 07:41 PM, Ronald Cepres wrote: >> >> Bogdan, >> >> 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? >> >> Thanks. >> >> -Ronald >> >> On Jul 4, 2013 11:58 PM, "Bogdan-Andrei Iancu" >> <[email protected] <mailto:[email protected]>> 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. >> >> Regards, >> >> Bogdan-Andrei Iancu >> OpenSIPS Founder and Developer >> http://www.opensips-solutions.com >> >> >> 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. >>> >>> >>> -- >>> >>> Regards, >>> >>> Ronald >>> >>> >>> _______________________________________________ >>> Users mailing list >>> [email protected] <mailto:[email protected]> >>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users >> > > > > -- > > Regards, > > Ronald Cepres >
_______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
