Hi all
Is there a way to skip a branch in branch route?
Situation: Two registrar server with DMQ synced location database.
CPE register via TCP or TLS. To properly work, message have to be sent over the existing TCP connection.
Multiple CPE register to one AOR.
CPE1 and CPE2 register to Registrar 1 CPE3 registers to Registrar 2
On Registrar 1 there is an established TCP connection to CPE1 and CPE2 but not to CPE3.
Within the Branch Route to the CPE I can check if there is a TCP as the Branch Route is executed for every contact in that AOR:
branch_route[BR_TO_CPE] { [...] $var(reg_contact_addr) = $(ulc(aor=>addr)[$T_branch_idx]{uri.host}); $var(socket) = $(ulc(aor=>socket)[$T_branch_idx]); if ($var(socket) == 0) { xlog("L_ERROR", "$cfg(route): No Socket for: $var(reg_contact_addr)"); } [...] }
This log an error if the socket is not present on the local registrar. But is there a way to tell kamailio to skip/discard that contact?
My intention is to parallel branch from the core to both registrars, that way all contacts would still get the call but via established TCP socket (and in case of UDP and NAT via correct know ip for ALG port-forwarding).