The branch RURI is quite clear I suppose but
For the NAT solving you should pass received set into $(branch(dst_uri)[-1])  or $du for main brach
Send socket also can be set via $(branch(send_socket)[-1])  or $fs respectively.

TCP can create new transactions, as UA can wait for incoming requests on different ports, which is announced in the Contact Header,
However, you may try to use the tcp_keepalive_enable() and tcp_set_alias() functions when a TCP connection is established to mediate over it if UA supports this way of interaction.

пт, 8 сент. 2023 г. в 17:32, Benoît Panizzon <benoit.panizzon@imp.ch>:
Hi Yuriy

This looks promising. I was able to set $ru and then add branches to
only send the calls from the registrar with a valid socket.

But I fear: append_branch($(ulc(aor=>addr)[$var(i)])) is not correct
in NAT situation.

aor=>received is probably the one to use, but does not contain the
username part. And also I probably lost that full NAT automation.

I also observed that the sending socket is not preserved. In my case I
have to tcp sockets: 8080 where I run the xhttp api, not used for sip,
and 5060. The outgoing call originates from 8080. So it is definitely
not reusing the existing TCP connection.

Do I have to set $fs? But how do I set this only for a specific branch?
Assume I have multiple contacts, some using TCP other UDP or TLS.

--
Mit freundlichen Grüssen

-Benoît Panizzon- @ HomeOffice und normal erreichbar
--
I m p r o W a r e   A G    -    Leiter Commerce Kunden
______________________________________________________

Zurlindenstrasse 29             Tel  +41 61 826 93 00
CH-4133 Pratteln                Fax  +41 61 826 93 01
Schweiz                         Web  http://www.imp.ch
______________________________________________________