I made two listeners:
listen=udp:10.130.0.23:5070 #to pbx in lan (I don`t want to put via header with 178.0.0.169)
listen=udp:10.130.0.23:5060 advertise 178.0.0.169:5060 #to internet (UserAgent need to get via header with 178.0.0.169 )
mhomed = 1 # I think It not useful for my case
UserAgent send Register and Invite to 178.0.0.169:5060, Kamailio get it on udp:10.130.0.23:5060
Kamailio Relay it to udp:10.130.0.23:5070
My pbx get requests from udp:10.130.0.23:5070 with via header 10.130.0.23
Responses to UserAgent go from udp:10.130.0.23:5060 with via 178.0.0.169
In RELAY block:
if ($Ru == «udp:10.130.0.23:5070») {
#set_send_socket(«udp:10.130.0.23:5060»);
$fs = «udp:10.130.0.23:5060»;
#force_send_socket(«udp:10.130.0.23:5060»);
} else {
#set_send_socket(«udp:10.130.0.23:5070»);
$fs = «udp:10.130.0.23:5070»;
}
#$fs = «udp:10.130.0.23:5070»;
if (!t_relay()) {
sl_reply_error();
}
route[REGISTRAR] {
if ($rd == "mydomain.ru" || $rd == "mydomain2.ru") {
set_send_socket("udp:10.130.0.23:5070");
}
}
It works for requests from UserAgent to PBX. But INVITE from my pbx to UserAgent goes only through udp:10.130.0.23:5070 , Kamailio realy it to internet from udp:10.130.0.23:5070
I get error in syslog: (pv [pv_branch.c:62]: pv_get_branchx_helper(): error accessing branch [0])
I tried set_send_socket(«udp:10.130.0.23:5070»); and $fs = «udp:10.130.0.23:5070»;
Why I can`t relay outgoing requests to internet through another socket?
Best regards, Alex