Hello,
I saw you opened an issue on github on this topic -- let's continue there the discussion.
Cheers,
Daniel
Hi All,
I've been doing some work this week with the new http_async_client module, it seems that with it's default behaviour it's not possible to execute another async query in the block immediately following the response, for example the following config:
request_route {if (!t_newtran()) {sl_reply_error();exit();}http_async_query("http://localhost:8090/req_1", '{"user":"$fU"}', "REQ_1");}
route[REQ_1] {xlog("L_INFO", "route[REQ_1]: INIT\n");if ($http_ok) {xlog("L_INFO", "route[REQ_1]: status $http_rs\n");xlog("L_INFO", "route[REQ_1]: Sending REQ_2\n");http_async_query("http://localhost:8090/req_2", '{"user":"$fU"}', "REQ_2");} else {xlog("L_INFO", "route[REQ_1]: error $http_err)\n");}}
route[REQ_2] {xlog("L_INFO", "route[REQ_2]: INIT\n");if ($http_ok) {xlog("L_INFO", "route[REQ_2]: status $http_rs\n");} else {xlog("L_INFO", "route[REQ_2]: error $http_err)\n");}}
Generates the following error:
10(11832) INFO: <script>: route[REQ_1]: INIT10(11832) INFO: <script>: route[REQ_1]: status 20010(11832) INFO: <script>: route[REQ_1]: Sending REQ_210(11832) WARNING: tm [t_suspend.c:186]: t_continue(): transaction is not suspended [53195:560306836]
Looking at the source, http_async_client calls t_suspend, then goes away and performs the request in the background. On response it calls t_continue and then this block in t_continue will continue execution, the second query will cause http_async_client to call t_suspend whilst sill executing from the previous t_continue. Once they query is sent, the first t_continue will complete, removing the T_ASYNC_SUSPENDED flag. When the second query returns it doesn't find the flag and so fails as shown.
I'm far from an expect on this so would really appreciate some pointers, it seems to fundamental to be a race condition in tm but the usage in http_async_client seems to match usage in other modules so I'm not sure on the best tactic.I've tried peppering append_branch and async_route call's in various places to no avail.
Full debug log here: http://pastebin.com/raw/rFmm0fmf
Any help appreciated,Thom Seddon
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla http://www.asipto.com - http://www.kamailio.org http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda