Use case WebRTC client connected to Kaamilio Edge proxy.
For network connectivity reasons, the flow token may no longer be valid. In this case, behavior should be described in the RFC5626, 5.3.1 Processing Incoming Requests
If the flow no longer exists, the proxy SHOULD send a 430 (Flow Failed) response to the request.
Also 9.3 Incoming Call and Proxy Crash
Bob's authoritative proxy first tries the flow to EP1, but EP1 no longer has a flow to Bob, so it responds with a 430 (Flow Failed) response.
To get it working, it will be fine to use construction like
if (!loose_route()) {
switch($rc) {
case -4:
sl_send_reply("403", "Flow Failed");
exit;
case -2:
sl_send_reply("403", "Forbidden");
exit;
default:
xlog("L_ERR", "in request_route\n");
sl_reply_error();
exit;
}
}
Where loose_route
returns a new error code (-4
for example). This error code is generated when the flow token points to not existing TCP/TLS/WSS connection.
Kamailio loose_route
allows the check of flow token validity before messages related via non-existent TCP/TLS/WSS connections.
For now, Kamailio tries to relay messages to non-existent client connections and generate an error message like
477 Unfortunately error on sending to next hop occurred (477/TM)
500 Message processing error (2/TM)
Required to start Kamailio with a config like
listen=udp:127.0.0.1:5060
listen=tcp:127.0.0.1:5060
loadmodule "pv.so"
loadmodule "xlog.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "siputils.so"
loadmodule "rr.so"
loadmodule "stun.so"
loadmodule "outbound.so"
modparam("outbound", "force_outbound_flag", 1)
modparam("outbound", "flow_token_secret", "kamailio")
loadmodule "debugger.so"
modparam("debugger", "cfgtrace", 1)
modparam("debugger", "log_level_name", "exec")
request_route {
loose_route();
switch($rc) {
case -3:
xlog("L_ERR", "loose_route code -3\n");
break;
case -2:
xlog("L_ERR", "loose_route code -2\n");
break;
case -1:
xlog("L_ERR", "loose_route code -1\n");
break;
case 1:
xlog("L_ERR", "loose_route code 1\n");
break;
case 2:
xlog("L_ERR", "loose_route code 2\n");
break;
}
record_route();
if (has_totag()) {
t_relay();
} else {
t_relay_to_udp("127.0.0.1", "5080");
}
}
Then need to start SIPp server script using the command
sipp -sf uas.xml -p 5080 -d 4000 -bind_local 127.0.0.1
And then start SIPp client script using the command
sipp -sf uac.xml -m 1 -t t1 127.0.0.1
Where uac.xml
and uas.xml
are attached
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.