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]: INIT
10(11832) INFO: <script>: route[REQ_1]: status 200
10(11832) INFO: <script>: route[REQ_1]: Sending REQ_2
10(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,
---
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/645