Just about the FS problem: I can definitely reproduce the same behaviour on 1.10 right now (482 merged calls). So yeah, It is still exists.
I also struggle a bit with this issue especially when do some extended test scenarios. It just doesn't recognizes different branches. So best approach - avoid send the same call to the same machine. On Fri, Mar 21, 2025, 15:00 Ben Kaufman via sr-users < sr-users@lists.kamailio.org> wrote: > It was about two years ago that I tested, so my statments here are just > what I recall, and therefor may be incorrect: > > I believe that I tested against 1.10, and there was no change in > Freeswtich behavior. Looking through issues it seems like Freeswitch's > support team's position was that the CSeq number should be incremented. Of > course, this would be problematic at the proxy level as it would then have > to track the offset it's creating from the UAC (I know there are functions > for this in Kamailio, but this doesn't seem the appropriate place for > this). There are some old issues reported for the same type of thing > within Kamailio, where Daniel pointed that the issue was Freeswitches > behavior, so it was a both sides pointing fingers situation (although I'm > pretty sure Daniel is correct). > > I think many people encoutring this issue went ahead with the "sleep" > solution. I inherited maintenance of an environment where this was done, > and the issue came to my attention via performance issues caused by the > blocking sleep call. Since I also had an array of Freeswitch servers which > could handle the request, my direct solution was to just make sure that the > failure route pointed to a different Freeswitch than the request route. > That was a workable situation in my scenario and much easier than trying to > convince someone the behavior is incorrect. My guess is that the > Freeswitch behavior is the same to this day simply because it hasn't been > revisited. > > On a personal level, I'm in the process of removing these Freeswitch > instances. This isn't a complaint against Freeswitch, but rather that it > was installed to handle media relay and RTPEngine is much better suited if > that's the only task that's needed. Given this, I don't have a lot of > motivation to dig into he issue further, but if needed, I think I could > pretty easily cook up a small docker-compose environment that illustrates > the problem. > > Regards, > Kaufman > ------------------------------ > *From:* Henning Westerholt <h...@gilawa.com> > *Sent:* Friday, March 21, 2025 8:22 AM > *To:* Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org> > *Cc:* Alex A <alex.antonev...@replicant.ai>; Ben Kaufman < > bkauf...@bcmone.com> > *Subject:* RE: [SR-Users] Re: How to place a delay between cancelling > branch and retrying next one on timer expiry? > > > *CAUTION:* This email originated from outside the organization. *Do not > click links or open attachments* unless you recognize the sender and know > the content is safe. > > Hi Ben, > > > > thank you. 16 years is indeed a longer time, one could hope that its now > fixed in a newer version. > > > > Cheers, > > > > Henning > > > > > > *From:* Ben Kaufman <bkauf...@bcmone.com> > *Sent:* Freitag, 21. März 2025 14:21 > *To:* Henning Westerholt <h...@gilawa.com>; Kamailio (SER) - Users Mailing > List <sr-users@lists.kamailio.org> > *Cc:* Alex A <alex.antonev...@replicant.ai> > *Subject:* Re: [SR-Users] Re: How to place a delay between cancelling > branch and retrying next one on timer expiry? > > > > The reference is 16 years old, so perhaps my statement would have been > better phrased as "didn't support" rather than what was at the time > "doesn't support": > > > > > https://freeswitch-users.freeswitch.narkive.com/pl2VL6Gu/482-request-merged-in-serial-forking > > > > With that said, the very specific statment of "We currently don't support > forked dialogs" is here: https://narkive.com/pl2VL6Gu:6.378.42 > > > > It's been a few years since I dealt with the issue first hand, but IIRC it > was relatively simple to recreate by relaying an INVITE to a freeswitch > that returns failure, then re-targeting that same freeswitch from kamailio > failure route. > > > > Regards, > > Kaufman > > > ------------------------------ > > *From:* Henning Westerholt > *Sent:* Friday, March 21, 2025 2:41 AM > *To:* Kamailio (SER) - Users Mailing List > *Cc:* Alex A; Ben Kaufman > *Subject:* RE: [SR-Users] Re: How to place a delay between cancelling > branch and retrying next one on timer expiry? > > > > *CAUTION:* This email originated from outside the organization. *Do not > click links or open attachments* unless you recognize the sender and know > the content is safe. > > > > Hello Ben, > > > > do you have any reference (e.g. bug tracker, e-mail thread) for the > “freeswitch don’t support SIP branching”? > > > > It sounds quite strange to me in this time that there are still those > large issues regarding the standard support in such a project. > > > > Thanks, > > > > Henning > > > > *From:* Ben Kaufman via sr-users <sr-users@lists.kamailio.org> > *Sent:* Donnerstag, 20. März 2025 15:57 > *To:* sr-users@lists.kamailio.org > *Cc:* Alex A <alex.antonev...@replicant.ai>; Ben Kaufman < > bkauf...@bcmone.com> > *Subject:* [SR-Users] Re: How to place a delay between cancelling branch > and retrying next one on timer expiry? > > > > I've dealt with the same issue, and as far as I understand, the problem is > with Freeswitch not supporting branching and IIRC not recognizing that the > via branch has changed. Adding a sleep function as indicated in that link > is a blocking process, so if you have this serial forking occur frequently > it could cause kamailio to have issues. There is a non-blocking > async_sleep function that I didn't have success with, but that was probably > a misunderstanding of how it worked on my part. With that said, you > might try adding another sip_profile to your freeswitch server (on a > different port) and see if sending the serially forked call to the other > sip_profile addresses it. Otherwise, I'd recommend adding another > freeswich instance (even if it's on the same server) rather than calling > sleep(); > > > > Regards, > > Kaufman > > > ------------------------------ > > *From:* Alex A via sr-users > *Sent:* Wednesday, March 19, 2025 4:58 PM > *To:* *sr-users@lists.kamailio.org <sr-users@lists.kamailio.org>* > *Cc:* Alex A > *Subject:* [SR-Users] How to place a delay between cancelling branch and > retrying next one on timer expiry? > > > > *CAUTION:* This email originated from outside the organization. *Do not > click links or open attachments* unless you recognize the sender and know > the content is safe. > > > > Hi All, > > I have an interesting use-case where I need to place a delay between > cancelling branch and retrying next one. > > *Background:* > Running Kamailio 5.6.x > > Kamailio routes requests via a freeswitch B2BUA server on select call > flows (where B2BUA functionality is required). > Call flow examples: > PSTN --> Kamailio --> Freeswitch --> appserver1 > PSTN --> Kamailio --> Freeswitch --> appserver2 > > On attempt failures, a branch retry is required from appserver1 to > appserver2; however freeswitch B2BUA remains the same > Since Freeswitch does not quite follow the RFC 3261 timer K specifications > (should be 0 seconds for reliable transports, but FS keeps transactions for > T4 (set to 2 seconds)); > I have implemented an artificial delay in failure route before retrying > (as per recommendation described here: > *https://freeswitch-users.freeswitch.narkive.com/TsSye66D/482-request-merged-in-serial-forking-solved > <https://freeswitch-users.freeswitch.narkive.com/TsSye66D/482-request-merged-in-serial-forking-solved>* > ) > > *Script config:* > > onreply_route[MANAGE_REPLY] { > > xlog("L_INFO", "reply $T_reply_code received"); > > if (t_check_status( "1[1-9][0-9]")) { > > t_reset_fr(); > > } else { > > t_set_fr(120000); > > } > > } > > > > route(NATDETECT); > > *#!ifdef WITH_RTPENGINE* > > route(RTPMANAGE); > > *#!endif* > > } > > > > route[RELAY] { > > > > if (is_method("INVITE|BYE|SUBSCRIBE|UPDATE")) { > > if(!t_is_set("branch_route")) t_on_branch("MANAGE_BRANCH"); > > } > > > > if (is_method("INVITE|SUBSCRIBE|UPDATE")) { > > if(!t_is_set("onreply_route")) t_on_reply("MANAGE_REPLY"); > > } > > > > if(is_method("INVITE|BYE|UPDATE|CANCEL|ACK")) { > > setflag(FLT_DLGINFO); > > } > > > > if (!t_relay()) { > > sl_reply_error(); > > } > > > > exit; > > } > > > > route[TOCARRIER] { > > process bunch of things, attach custom headers, generate request URI > > > > t_on_failure("MANAGE_FAILURE_CARRIER"); > > route(RELAY); > > } > > > > failure_route[MANAGE_FAILURE_CARRIER] { > > xlog("L_INFO", "reply $T_reply_code received"); > > if ($avp(inbound_attempt)<=1){ > > if ($dlg_var(b2bua)=="true"){ > > usleep(1900000); > > } > > route("TOCARRIER"); > > > > } > > > > > > *Call Flows:* > > > The above fix works well when an explicit error reply is received back. > > > *error reply SIP exchange:* > SBC --> INVITE(branch0) ---> Freeswitch > SBC <-- 503 <-- Freeswitch > failure_route executed (sleep runs here) > SBC --> INVITE(branch1) ---> Freeswitch > call continues as expected. > > > > however does not work when NO reply is received at all and the timer > expires. > *Current timer expiry SIP exchange:* > SBC --> INVITE(branch0) ---> Freeswitch > SBC <-- 100/180 <-- Freeswitch > SBC (timer expires) > failure_route executed (sleep runs here) > SBC --> INVITE(branch1) ---> Freeswitch > SBC <-- 482 Merged <-- Freeswitch > SBC --> CANCEL(branch0) ---> Freeswitch > > > I am looking to CANCEL branch0 before the sleep delay runs > > > Based on source code, t_cancel_branches("this") can only be executed in > reply_route; > however the chellenge is that reply_route never sees the "faked 408" on > timer expiry(although the failure route does see $T_reply_code 408). > > > > Any suggestions on how to handle this would be greatly appreciated. > > TIA > > > > > > > > __________________________________________________________ > Kamailio - Users Mailing List - Non Commercial Discussions -- > sr-users@lists.kamailio.org > To unsubscribe send an email to sr-users-le...@lists.kamailio.org > Important: keep the mailing list in the recipients, do not reply only to > the sender! >
__________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions -- sr-users@lists.kamailio.org To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender!