Hello, this sound indeed strange, as this is used from many people without any problems. Its not expected to use C programming to alter the message transport for relaying.
If you can reproduce and minimize the problem towards a small test cfg and a test message, it would be great if you could open an issue in our tracker. Cheers, Henning > -----Original Message----- > From: Alberto Diez via sr-users <sr-users@lists.kamailio.org> > Sent: Freitag, 8. März 2024 10:28 > To: sr-users@lists.kamailio.org > Cc: Alberto Diez <alberto-li...@mobileplots.com> > Subject: [SR-Users] Re: from TCP to UDP and Kamailio doing it wrong > > thanks Alex. Sadly in my case the Request-URI does not contain a transport > parameter. > > So the call to prepare_new_uac() function is deciding based on another > parameter (don't know which, was trying to avoid investigating that because > the function is a pain and not commented). I think its quite > counter-intuitive, > and for me a bug, that you call t_relay_to_udp and Kamailio tries to connect > over TCP.... Same if its dispatcher module asking to dispatch to UDP and > t_relay decides TCP (because it calls this same function at the end) etc. > > By the way I also tried forcing the socket from the config file to be the UDP > one, and nothing. Prior to calling prepare_new_uac the socket is the UDP one, > but after calling that function it has changed the socket to a TCP one. > > Would be great if anyone has a hint what could be going on and why > prepare_new_uac changes the socket and based on what param > > Best regards > > alberto > > El 07/03/2024 a las 21:44, Alex Balashov via sr-users escribió: > > If you just strip the incoming ;transport=tcp attribute, I think all should > > be > well when t_relay() consumes the modified RURI. > > > >> On 7 Mar 2024, at 12:48, Alberto Diez via sr-users <sr- > us...@lists.kamailio.org> wrote: > >> > >> Hi Sergiu, > >> yes I am pretty sure something is going wrong. > >> I do have kamailio listening udp sockets and also the dispatcher is on UDP > doing SIP OPTIONS over UDP all the time without any problem. > >> I have not tried forcing the socket I tried to find out why kamailio is > >> trying to > use TCP with the targets even when I use t_relay_to_udp and that's how I > ended up finding that function which claims not to do something if next_hop > is 0 but doing it nevertheless (which I guess is something going wrong in > general in Kamailio not in particular in my setup). > >> I will try forcing the socket, but that crazy tm module function > >> rewrites the socket was already given as a destination (yes I already > >> checked that in the C code before!) Best regards alberto El > >> 07/03/2024 a las 17:43, Sergiu Pojoga escribió: > >>> You must be doing something essentially wrong if it came down to > checking C functions for something as trivial as transport conversion.. > >>> > >>> Are you sure you have a UDP listening socket? > >>> kamcmd corex.list_sockets > >>> > >>> Result of: > >>> kamcmd dispatcher.list > >>> > >>> Have you tried forcing the send socket? > >>> https://www.kamailio.org/wiki/cookbooks/devel/pseudovariables#fs_-_f > >>> orced_send_socket > >>> > >>> Cheers > >>> > >>> On Thu, Mar 7, 2024 at 11:27 AM Alberto Diez via sr-users <sr- > us...@lists.kamailio.org> wrote: > >>> Hi kamailio community, > >>> > >>> I have an issue with a Kamailio 5.7. It's listening both in TCP and > >>> UDP. In my scenario requests arrive from devices on TCP, but I want > >>> to forward to the next hops on UDP. I am avoiding using any type of > >>> DNS resolution; since I am always forwarding to predefined next hops > >>> I am using the dispatcher module (defined with the IP addresses and > >>> transport=udp) or I wrote config files using t_relay_to_udp or > >>> t_relay_to with a udp: followed by IP address. I never set up FQDNS > >>> only IP addresses and in all of them I explicitly mention UDP. > >>> > >>> In all of these scenarios I have tried Kamailio insists in trying to > >>> use TCP with the next hop and failing because the next_hop is only > >>> UDP. I guess because the message arrived using TCP Kamilio does that > >>> but I find the behavior very confusing. > >>> > >>> I nailed down that in my situation its the tm module function > >>> prepare_new_uac (in file src/modules/tm/t_fwd.c line 119) being the > >>> one that missbehaves. The documentation of the function says literraly : > >>> > >>> "* t->uac[branch].request.dst will be filled if next_hop !=0 with the > >>> result > >>> * of the DNS resolution (next_hop, fproto and fsocket). > >>> * If next_hop is 0 all the dst members except the send_flags are read- > only > >>> * (send_flags it's updated) and are supposed to be pre-filled." > >>> > >>> I found out that even when next_hop is 0 the function changes the > >>> t->uac[branch].request.dst proto, socket etc. its there that the > >>> kamailio takes the wrong decision, until that function is called > >>> within add_auc, the destination proto or the fproto etc is always 1 > >>> (UDP) which is what I am trying to force from the config file or the > >>> dispatcher definition (I tried both ways). But after calling that > >>> function then it comes as a 2 (TCP) > >>> > >>> The problematic function is a monster of 500 lines and I would like > >>> to avoid having to understand it. Since I think the scenario is not > >>> so unusual I just want to ask if maybe I am missing something that I > >>> should do to avoid the Kamailio to select TCP and in order to have > >>> the tm module respecting my preference for UDP (either with > >>> dispatcher module and the transport param or with t_relay_to or > >>> t_relay_to_udp I don't care the way). > >>> > >>> Any hints are welcome. > >>> > >>> Best regards > >>> > >>> alberto > >>> > >>> __________________________________________________________ > >>> Kamailio - Users Mailing List - Non Commercial Discussions 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! > >>> Edit mailing list options or unsubscribe: > >> __________________________________________________________ > >> Kamailio - Users Mailing List - Non Commercial Discussions 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! > >> Edit mailing list options or unsubscribe: > __________________________________________________________ > Kamailio - Users Mailing List - Non Commercial Discussions 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! > Edit mailing list options or unsubscribe: __________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions 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! Edit mailing list options or unsubscribe: