The object name is already known and stored in the ubus object,
so there is no need ubus_lookup() all objects and reverse resolve
the id to it's name on every plugin handler call.

Signed-off-by: Daniel Danzberger <[email protected]>
---
 plugin.c | 41 ++---------------------------------------
 1 file changed, 2 insertions(+), 39 deletions(-)

diff --git a/plugin.c b/plugin.c
index ea6e60f..7cd59c4 100644
--- a/plugin.c
+++ b/plugin.c
@@ -20,37 +20,6 @@
 
 static struct blob_buf buf;
 
-struct rpc_plugin_lookup_context {
-       uint32_t id;
-       char *name;
-       bool found;
-};
-
-static void
-rpc_plugin_lookup_plugin_cb(struct ubus_context *ctx,
-                            struct ubus_object_data *obj, void *priv)
-{
-       struct rpc_plugin_lookup_context *c = priv;
-
-       if (c->id == obj->id)
-       {
-               c->found = true;
-               sprintf(c->name, "%s", obj->path);
-       }
-}
-
-static bool
-rpc_plugin_lookup_plugin(struct ubus_context *ctx, struct ubus_object *obj,
-                         char *strptr)
-{
-       struct rpc_plugin_lookup_context c = { .id = obj->id, .name = strptr };
-
-       if (ubus_lookup(ctx, NULL, rpc_plugin_lookup_plugin_cb, &c))
-               return false;
-
-       return c.found;
-}
-
 static void
 rpc_plugin_json_array_to_blob(struct array_list *a, struct blob_buf *blob);
 
@@ -204,7 +173,7 @@ rpc_plugin_call(struct ubus_context *ctx, struct 
ubus_object *obj,
 {
        int rv = UBUS_STATUS_UNKNOWN_ERROR;
        struct call_context *c;
-       char *plugin, *mptr;
+       char *mptr;
 
        c = calloc_a(sizeof(*c), &mptr, strlen(method) + 1);
 
@@ -218,13 +187,7 @@ rpc_plugin_call(struct ubus_context *ctx, struct 
ubus_object *obj,
        if (!c->input || !c->tok)
                goto fail;
 
-       plugin = c->path + sprintf(c->path, "%s/", RPC_PLUGIN_DIRECTORY);
-
-       if (!rpc_plugin_lookup_plugin(ctx, obj, plugin))
-       {
-               rv = UBUS_STATUS_NOT_FOUND;
-               goto fail;
-       }
+       sprintf(c->path, "%s/%s", RPC_PLUGIN_DIRECTORY, obj->name);
 
        c->argv[0] = c->path;
        c->argv[1] = "call";
-- 
2.35.1


_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to