X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=libubus-obj.c;fp=libubus-obj.c;h=ed18ca99f4ecff13bd0f16e82c859d870d580e66;hb=ee9e399096941e1c745f34f118a2cf8d1862243e;hp=c35e075fe2ed0292f1901c33ac1ecd7ca0bbda47;hpb=154a87c683e3ff39f86998a3e37f6a0d9fb1f677;p=project%2Fubus.git diff --git a/libubus-obj.c b/libubus-obj.c index c35e075..ed18ca9 100644 --- a/libubus-obj.c +++ b/libubus-obj.c @@ -48,6 +48,7 @@ ubus_process_invoke(struct ubus_context *ctx, struct ubus_msghdr *hdr, struct ubus_request_data req = {}; int method; int ret; + bool no_reply = false; if (!obj) { ret = UBUS_STATUS_NOT_FOUND; @@ -59,6 +60,9 @@ ubus_process_invoke(struct ubus_context *ctx, struct ubus_msghdr *hdr, goto send; } + if (attrbuf[UBUS_ATTR_NO_REPLY]) + no_reply = blob_get_int8(attrbuf[UBUS_ATTR_NO_REPLY]); + req.peer = hdr->peer; req.seq = hdr->seq; req.object = obj->id; @@ -77,7 +81,7 @@ found: ret = obj->methods[method].handler(ctx, obj, &req, blob_data(attrbuf[UBUS_ATTR_METHOD]), attrbuf[UBUS_ATTR_DATA]); - if (req.deferred) + if (req.deferred || no_reply) return; send: