From: Jo-Philipp Wich Date: Thu, 1 Oct 2020 17:58:27 +0000 (+0200) Subject: ubus: fix legacy empty reply format X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=14a3cb42047bd0c0f8d5713332b9b4516a505607;p=project%2Fuhttpd.git ubus: fix legacy empty reply format The legacy ubus protocol must not include an empty object in the result array if the invoked ubus procedure yielded no response. This fixes compatibility with existing legacy ubus api clients that expect this behaviour, LuCI's fs.js in particular. Signed-off-by: Jo-Philipp Wich --- diff --git a/ubus.c b/ubus.c index 39b38b2..cc7447e 100644 --- a/ubus.c +++ b/ubus.c @@ -465,10 +465,14 @@ uh_ubus_request_cb(struct ubus_request *req, int ret) uh_ubus_init_json_rpc_response(cl, &buf); r = blobmsg_open_array(&buf, "result"); blobmsg_add_u32(&buf, "", ret); - c = blobmsg_open_table(&buf, NULL); - blob_for_each_attr(cur, du->buf.head, rem) - blobmsg_add_blob(&buf, cur); - blobmsg_close_table(&buf, c); + + if (blob_len(du->buf.head)) { + c = blobmsg_open_table(&buf, NULL); + blob_for_each_attr(cur, du->buf.head, rem) + blobmsg_add_blob(&buf, cur); + blobmsg_close_table(&buf, c); + } + blobmsg_close_array(&buf, r); uh_ubus_send_response(cl, &buf); return;