X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=libubus-req.c;h=8475dc9abf1514a4f90f030d1051f0032b27a6c6;hb=f47005a44ca63fd882ce24b16ebfba39f81f0ba7;hp=cdb8393efab94858b5a6f14ee322ae9e22469e61;hpb=1d5ac421a5b3dca60562e876ba70d0c2fe46b3d2;p=project%2Fubus.git diff --git a/libubus-req.c b/libubus-req.c index cdb8393..8475dc9 100644 --- a/libubus-req.c +++ b/libubus-req.c @@ -171,11 +171,12 @@ int ubus_complete_request(struct ubus_context *ctx, struct ubus_request *req, if (req->complete_cb) req->complete_cb(req, status); - if (!registered) + if (!registered) { uloop_fd_delete(&ctx->sock); - if (!ctx->stack_depth) - ubus_process_pending_msg(ctx); + if (ctx->stack_depth) + ctx->pending_timer.cb(&ctx->pending_timer); + } return status; } @@ -223,8 +224,12 @@ int ubus_invoke(struct ubus_context *ctx, uint32_t obj, const char *method, int timeout) { struct ubus_request req; + int rc; + + rc = ubus_invoke_async(ctx, obj, method, msg, &req); + if (rc) + return rc; - ubus_invoke_async(ctx, obj, method, msg, &req); req.data_cb = cb; req.priv = priv; return ubus_complete_request(ctx, &req, timeout);