Considering such route for async queries

route[REQUESTRTJSON] {
xlogl("L_INFO", "Requesting JSON routes\n");
t_newtran();
$http_req(hdr) = "Expect:";
$http_req(timeout) = DEFAULTHTTPTIMEOUTMSEC;
http_async_query("http://127.0.0.1/webrtcwslb/forwarder.php?forwardservice=kamailiort&rU=$(rU{s.encode.hexa})&fU=$(fU{s.encode.hexa})&dd=$(dd{s.encode.hexa})&du=$(du{s.encode.hexa})&rd=$(rd{s.encode.hexa})&fn=$(fn{s.encode.hexa})&fd=$(fd{s.encode.hexa})&td=$(td{s.encode.hexa})&tn=$(tn{s.encode.hexa})&tU=$(tU{s.encode.hexa})&ci=$(ci{s.encode.hexa})&ct=$(ct{s.encode.hexa})&si=$(si{s.encode.hexa})&mb=$(mb{s.encode.hexa})&dP=$(dP{s.encode.hexa})","HTTPRTJSONREPLY");
}

And answer processed in

route[HTTPRTJSONREPLY] {
if($http_ok) {
xlogl("L_INFO", "route[HTTPRTJSONREPLY]: status $http_rs\n");
xlogl("L_INFO", "route[HTTPRTJSONREPLY]: body $http_rb\n");
json_get_field($http_rb,"routing", "$var(routing)");
if($var(routing)=="location") {
route(LOCATION);
exit;
}
xlogl("L_INFO", "route[HTTPRTJSONREPLY]: init routes\n");
rtjson_init_routes("$http_rb");
xlogl("L_INFO", "route[HTTPRTJSONREPLY]: pushing routes\n");
rtjson_push_routes();
xlogl("L_INFO", "route[HTTPRTJSONREPLY]: pushed routes\n");
t_on_branch("MANAGE_BRANCH");
t_on_failure("MANAGE_FAILURE");
route(RELAY);
exit;
} else {
xlogl("L_INFO", "route[HTTPRTJSONREPLY]: error $http_err\n");
exit;
}
}

the cfgtrace gives

2016-11-16T09:29:36.869221+01:00 localhost (12040) ERROR: *** cfgtrace:request_route=[REQUESTRTJSON] c=[/product/CCAPI/WebRTC/Kamailio/etc/1479284325.480324_f0b20d2e1c37d2fa3dfed1126a48aacaf79c2ab6//kamailio.cfg] l=581 a=26 n=http_async_query
...
2016-11-16T09:29:36.912117+01:00 localhost (12035) ERROR: *** cfgtrace:failure_route=[HTTPRTJSONREPLY] c=[/product/CCAPI/WebRTC/Kamailio/etc/1479284325.480324_f0b20d2e1c37d2fa3dfed1126a48aacaf79c2ab6//kamailio.cfg] l=607 a=16 n=if

so HTTPRTJSONREPLY route is considered as failure_route, such state is kept when calling route(RELAY) and further raising the following code in rtpengine on INVITE for rtpengine_manage() function
if (msg->first_line.type == SIP_REQUEST) {
...
if(method==METHOD_INVITE && nosdp==0) {
msg->msg_flags |= FL_SDP_BODY;
if(tmb.t_gett!=NULL && tmb.t_gett()!=NULL
&& tmb.t_gett()!=T_UNDEFINED)
tmb.t_gett()->uas.request->msg_flags |= FL_SDP_BODY;
if(route_type==FAILURE_ROUTE)
return rtpengine_delete(msg, flags);
return rtpengine_offer_answer(msg, flags, OP_OFFER, 0);
}

On kamailio 4.4.1 rtpengine_offer_answer() was called, but now rtpengine_delete() is called due to (route_type==FAILURE_ROUTE)


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.