diff options
Diffstat (limited to 'valkey-loadmod.patch')
-rw-r--r-- | valkey-loadmod.patch | 47 |
1 files changed, 37 insertions, 10 deletions
diff --git a/valkey-loadmod.patch b/valkey-loadmod.patch index 15e8489..94a6b25 100644 --- a/valkey-loadmod.patch +++ b/valkey-loadmod.patch @@ -1,18 +1,27 @@ -From c48838c5086cd3eec40f227ab6fa3ab36450c6ed Mon Sep 17 00:00:00 2001 +From ca074200a9ea12a2d7e9a1e0c370614b4512e2e2 Mon Sep 17 00:00:00 2001 From: Remi Collet <remi@remirepo.net> Date: Sat, 4 Oct 2025 07:23:52 +0200 Subject: [PATCH] Fix #2678 don't add loadmodule when from config --- - src/config.c | 2 +- - src/module.c | 15 +++++++++++---- - src/module.h | 2 +- - 3 files changed, 13 insertions(+), 6 deletions(-) + src/config.c | 4 ++-- + src/module.c | 17 ++++++++++++----- + src/module.h | 4 ++-- + 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/config.c b/src/config.c -index d0158b2c4d..9d9ac2608a 100644 +index d0158b2c4d..87f4790c23 100644 --- a/src/config.c +++ b/src/config.c +@@ -572,7 +572,7 @@ void loadServerConfigFromString(sds config) { + goto loaderr; + } + } else if (!strcasecmp(argv[0], "loadmodule") && argc >= 2) { +- moduleEnqueueLoadModule(argv[1], &argv[2], argc - 2); ++ moduleEnqueueLoadModule(argv[1], &argv[2], argc - 2, 1); + } else if (strchr(argv[0], '.')) { + if (argc < 2) { + err = "Module config specified without value"; @@ -1605,7 +1605,7 @@ void rewriteConfigLoadmoduleOption(struct rewriteConfigState *state) { while ((de = dictNext(di)) != NULL) { struct ValkeyModule *module = dictGetVal(de); @@ -23,7 +32,7 @@ index d0158b2c4d..9d9ac2608a 100644 dictReleaseIterator(di); /* Mark "loadmodule" as processed in case modules is empty. */ diff --git a/src/module.c b/src/module.c -index e5afa952fa..42f42ba80c 100644 +index e5afa952fa..dd440d1edf 100644 --- a/src/module.c +++ b/src/module.c @@ -84,6 +84,7 @@ @@ -34,11 +43,20 @@ index e5afa952fa..42f42ba80c 100644 int argc; robj **argv; }; +@@ -670,7 +671,7 @@ void freeClientModuleData(client *c) { + c->module_data = NULL; + } + +-void moduleEnqueueLoadModule(sds path, sds *argv, int argc) { ++void moduleEnqueueLoadModule(sds path, sds *argv, int argc, int is_config) { + int i; + struct moduleLoadQueueEntry *loadmod; + @@ -678,6 +679,7 @@ void moduleEnqueueLoadModule(sds path, sds *argv, int argc) { loadmod->argv = argc ? zmalloc(sizeof(robj *) * argc) : NULL; loadmod->path = sdsnew(path); loadmod->argc = argc; -+ loadmod->conf = 1; ++ loadmod->conf = is_config; for (i = 0; i < argc; i++) { loadmod->argv[i] = createRawStringObject(argv[i], sdslen(argv[i])); } @@ -58,7 +76,7 @@ index e5afa952fa..42f42ba80c 100644 while ((ln = listNext(&li))) { struct moduleLoadQueueEntry *loadmod = ln->value; - if (moduleLoad(loadmod->path, (void **)loadmod->argv, loadmod->argc, 0) == C_ERR) { -+ if (moduleLoad(loadmod->path, (void **)loadmod->argv, loadmod->argc, 0, 1) == C_ERR) { ++ if (moduleLoad(loadmod->path, (void **)loadmod->argv, loadmod->argc, 0, loadmod->conf) == C_ERR) { serverLog(LL_WARNING, "Can't load module from %s: server aborting", loadmod->path); exit(1); } @@ -98,9 +116,18 @@ index e5afa952fa..42f42ba80c 100644 else { dictEmpty(server.module_configs_queue, NULL); diff --git a/src/module.h b/src/module.h -index f6c266b592..1a964c1af9 100644 +index f6c266b592..e48a98f4ba 100644 --- a/src/module.h +++ b/src/module.h +@@ -169,7 +169,7 @@ static inline void moduleInitDigestContext(ValkeyModuleDigest *mdvar) { + memset(mdvar->x, 0, sizeof(mdvar->x)); + } + +-void moduleEnqueueLoadModule(sds path, sds *argv, int argc); ++void moduleEnqueueLoadModule(sds path, sds *argv, int argc, int is_config); + sds moduleLoadQueueEntryToLoadmoduleOptionStr(ValkeyModule *module, + const char *config_option_str); + ValkeyModuleCtx *moduleAllocateContext(void); @@ -180,7 +180,7 @@ void moduleFreeContext(ValkeyModuleCtx *ctx); void moduleInitModulesSystem(void); void moduleInitModulesSystemLast(void); |