projects
/
project
/
ubus.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libubus: do not modify uloop_cancelled
[project/ubus.git]
/
libubus-req.c
diff --git
a/libubus-req.c
b/libubus-req.c
index
db5061c
..
0c7d589
100644
(file)
--- a/
libubus-req.c
+++ b/
libubus-req.c
@@
-122,7
+122,7
@@
static void ubus_sync_req_cb(struct ubus_request *req, int ret)
{
req->status_msg = true;
req->status_code = ret;
{
req->status_msg = true;
req->status_code = ret;
-
uloop_end()
;
+
req->ctx->cancel_poll = true
;
}
static int64_t get_time_msec(void)
}
static int64_t get_time_msec(void)
@@
-151,28
+151,26
@@
int ubus_complete_request(struct ubus_context *ctx, struct ubus_request *req,
ctx->stack_depth++;
while (!req->status_msg) {
ctx->stack_depth++;
while (!req->status_msg) {
- bool cancelled = uloop_cancelled;
-
- uloop_cancelled = false;
if (req_timeout) {
timeout = time_end - get_time_msec();
if (timeout <= 0) {
ubus_set_req_status(req, UBUS_STATUS_TIMEOUT);
if (req_timeout) {
timeout = time_end - get_time_msec();
if (timeout <= 0) {
ubus_set_req_status(req, UBUS_STATUS_TIMEOUT);
- uloop_cancelled = cancelled;
break;
}
}
break;
}
}
+
ubus_poll_data(ctx, (unsigned int) timeout);
ubus_poll_data(ctx, (unsigned int) timeout);
- uloop_cancelled = cancelled;
if (ctx->sock.eof) {
ubus_set_req_status(req, UBUS_STATUS_CONNECTION_FAILED);
if (ctx->sock.eof) {
ubus_set_req_status(req, UBUS_STATUS_CONNECTION_FAILED);
+ ctx->cancel_poll = true;
break;
}
}
break;
}
}
+
ctx->stack_depth--;
if (ctx->stack_depth)
ctx->stack_depth--;
if (ctx->stack_depth)
-
uloop_cancelled
= true;
+
ctx->cancel_poll
= true;
if (req->status_msg)
status = req->status_code;
if (req->status_msg)
status = req->status_code;