ubus: use local "blob_buf" in uh_ubus_handle_request_object()
authorRafał Miłecki <rafal@milecki.pl>
Mon, 27 Jul 2020 05:07:34 +0000 (07:07 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Wed, 5 Aug 2020 06:24:19 +0000 (08:24 +0200)
This follows two other functions logic: uh_ubus_send_request() and
uh_ubus_allowed(). Thanks to this change global "buf" variable is used
only for replies and doesn't require state tracking & reinitialization.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
ubus.c

diff --git a/ubus.c b/ubus.c
index ddc2f05d7d244eae01ccc56ca22bffc8eae623a5..062e973585135d2369bc25f3159fbbfa8710359c 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -194,7 +194,6 @@ static void uh_ubus_init_response(struct client *cl)
        struct dispatch_ubus *du = &cl->dispatch.ubus;
        struct json_object *obj = du->jsobj_cur, *obj2 = NULL;
 
-       blob_buf_init(&buf, 0);
        blobmsg_add_string(&buf, "jsonrpc", "2.0");
 
        if (obj)
@@ -520,6 +519,7 @@ static void uh_ubus_handle_request_object(struct client *cl, struct json_object
        struct dispatch_ubus *du = &cl->dispatch.ubus;
        struct rpc_data data = {};
        enum rpc_error err = ERROR_PARSE;
+       static struct blob_buf req;
 
        uh_client_ref(cl);
 
@@ -527,11 +527,11 @@ static void uh_ubus_handle_request_object(struct client *cl, struct json_object
                goto error;
 
        du->jsobj_cur = obj;
-       blob_buf_init(&buf, 0);
-       if (!blobmsg_add_object(&buf, obj))
+       blob_buf_init(&req, 0);
+       if (!blobmsg_add_object(&req, obj))
                goto error;
 
-       if (!parse_json_rpc(&data, buf.head))
+       if (!parse_json_rpc(&data, req.head))
                goto error;
 
        if (!strcmp(data.method, "call")) {