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 or view it on GitHub:
https://github.com/kamailio/kamailio/issues/855#issuecomment-260890866