projects
/
project
/
ubus.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libubus: fix logic inversion for cancelling requests
[project/ubus.git]
/
libubus-req.c
diff --git
a/libubus-req.c
b/libubus-req.c
index
ec82979
..
43a5c26
100644
(file)
--- a/
libubus-req.c
+++ b/
libubus-req.c
@@
-66,7
+66,7
@@
int __hidden ubus_start_request(struct ubus_context *ctx, struct ubus_request *r
void ubus_abort_request(struct ubus_context *ctx, struct ubus_request *req)
{
void ubus_abort_request(struct ubus_context *ctx, struct ubus_request *req)
{
- if (
!
list_empty(&req->list))
+ if (list_empty(&req->list))
return;
req->cancelled = true;
return;
req->cancelled = true;
@@
-157,6
+157,8
@@
int ubus_complete_request(struct ubus_context *ctx, struct ubus_request *req,
uloop_cancelled = cancelled;
}
ctx->stack_depth--;
uloop_cancelled = cancelled;
}
ctx->stack_depth--;
+ if (ctx->stack_depth)
+ uloop_cancelled = true;
if (timeout)
uloop_timeout_cancel(&cb.timeout);
if (timeout)
uloop_timeout_cancel(&cb.timeout);
@@
-285,8
+287,10
@@
int ubus_notify(struct ubus_context *ctx, struct ubus_object *obj,
if (ret < 0)
return ret;
if (ret < 0)
return ret;
- if (timeout < 0)
+ if (timeout < 0) {
+ ubus_abort_request(ctx, &req.req);
return 0;
return 0;
+ }
return ubus_complete_request(ctx, &req.req, timeout);
}
return ubus_complete_request(ctx, &req.req, timeout);
}