mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 09:00:51 +00:00
Fix MODULE UNLOAD crash and/or wrong error message.
This commit is contained in:
parent
550fa7e14f
commit
87312ff781
21
src/module.c
21
src/module.c
@ -2956,13 +2956,13 @@ int moduleLoad(const char *path) {
|
|||||||
int moduleUnload(sds name) {
|
int moduleUnload(sds name) {
|
||||||
struct RedisModule *module = dictFetchValue(modules,name);
|
struct RedisModule *module = dictFetchValue(modules,name);
|
||||||
|
|
||||||
if (listLength(module->types)) {
|
if (module == NULL) {
|
||||||
errno = EBUSY;
|
errno = ENOENT;
|
||||||
return REDISMODULE_ERR;
|
return REDISMODULE_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (module == NULL) {
|
if (listLength(module->types)) {
|
||||||
errno = ENOENT;
|
errno = EBUSY;
|
||||||
return REDISMODULE_ERR;
|
return REDISMODULE_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3020,10 +3020,17 @@ void moduleCommand(client *c) {
|
|||||||
if (moduleUnload(c->argv[2]->ptr) == C_OK)
|
if (moduleUnload(c->argv[2]->ptr) == C_OK)
|
||||||
addReply(c,shared.ok);
|
addReply(c,shared.ok);
|
||||||
else {
|
else {
|
||||||
char *errmsg = "operation not possible.";
|
char *errmsg;
|
||||||
switch(errno) {
|
switch(errno) {
|
||||||
case ENOENT: errmsg = "no such module with that name";
|
case ENOENT:
|
||||||
case EBUSY: errmsg = "the module exports one or more module-side data types, can't unload";
|
errmsg = "no such module with that name";
|
||||||
|
break;
|
||||||
|
case EBUSY:
|
||||||
|
errmsg = "the module exports one or more module-side data types, can't unload";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
errmsg = "operation not possible.";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
addReplyErrorFormat(c,"Error unloading module: %s",errmsg);
|
addReplyErrorFormat(c,"Error unloading module: %s",errmsg);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user