[OpenSIPS-Users] Unexpected Dispatcher TLS interaction

John Quick john.quick at smartvox.co.uk
Mon Apr 8 10:43:13 CEST 2013


I have been running some tests using the Dispatcher module on v1.9 of
OpenSIPS and found an unexpected interaction with the transport protocol of
the received INVITE request. When the INVITE request is received over UDP,
Dispatcher works fine for all destinations in the set, but when the INVITE
is received over TLS only the first Dispatcher destination works. The second
and subsequent destinations (after calls to ds_next_domain) all fail. i.e.
in this code, t_relay() returns false:
ds_next_domain("1", "0");
if (!t_relay()) {
    xlog("L_WARN", " t_relay failed");
    sl_reply_error();
}

I suspect this is a problem with transport protocol selection for the onward
request because the following alternative code works:
ds_next_domain("1", "0");
force_send_socket(udp:<interface-address>);
if (!t_relay()) {
    xlog("L_WARN", " t_relay failed");
    sl_reply_error();
}

The problem also happens for the first destination in a new destination set
(e.g. using ds_select_domain("2", "0")), after exhausting all members of set
1.

I would expect Dispatcher to use the same transport for the first and all
subsequent destinations, but it actually looks like it is using UDP for the
first and then using the transport of the received request for subsequent
destinations. Can the transport be specified in the destination field of the
dispatcher table? For example, could this field be set to
"sip:<destination-ip>;transport=udp" ?

John Quick
Smartvox Limited
Web: www.smartvox.co.uk






More information about the Users mailing list