ucode: initialize module search path early
authorJo-Philipp Wich <jo@mein.io>
Mon, 12 Sep 2022 11:44:59 +0000 (13:44 +0200)
committerJo-Philipp Wich <jo@mein.io>
Mon, 12 Sep 2022 11:46:18 +0000 (13:46 +0200)
Ensure that the default module search path is initialized before compiling
ucode handler scripts in order to support compile time import statements.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
ucode.c

diff --git a/ucode.c b/ucode.c
index c67a6193e8c32fd64c125e4b2c7db01ffa9ca394..bc070471cc213d8a24b762b6b95b31ebfef74074 100644 (file)
--- a/ucode.c
+++ b/ucode.c
@@ -929,7 +929,6 @@ rpc_ucode_script_execute(struct ubus_context *ctx, const char *path, uc_program_
 
        script->path = strncpy(pptr, path, pathlen);
 
-       uc_search_path_init(&config.module_search_path);
        uc_vm_init(&script->vm, &config);
        rpc_ucode_init_globals(script);
 
@@ -1019,6 +1018,10 @@ rpc_ucode_api_init(const struct rpc_daemon_ops *ops, struct ubus_context *ctx)
                fprintf(stderr, "Failed to dlopen() ucode.so: %s, dynamic ucode plugins may fail\n",
                        dlerror());
        }
+
+       /* initialize default module search path */
+       uc_search_path_init(&config.module_search_path);
+
        if ((d = opendir(RPC_UCSCRIPT_DIRECTORY)) != NULL) {
                while ((e = readdir(d)) != NULL) {
                        snprintf(path, sizeof(path), RPC_UCSCRIPT_DIRECTORY "/%s", e->d_name);