Commit 9403b3d7 authored by antirez's avatar antirez
Browse files

Modules shared API: prevent unloading of used modules.

parent 6bb8cdae
...@@ -4896,11 +4896,12 @@ int moduleUnload(sds name) { ...@@ -4896,11 +4896,12 @@ int moduleUnload(sds name) {
if (module == NULL) { if (module == NULL) {
errno = ENOENT; errno = ENOENT;
return REDISMODULE_ERR; return REDISMODULE_ERR;
} } else if (listLength(module->types)) {
if (listLength(module->types)) {
errno = EBUSY; errno = EBUSY;
return REDISMODULE_ERR; return REDISMODULE_ERR;
} else if (listLength(module->usedby)) {
errno = EPERM;
return REDISMODULE_ERR;
} }
moduleUnregisterCommands(module); moduleUnregisterCommands(module);
...@@ -4966,7 +4967,12 @@ NULL ...@@ -4966,7 +4967,12 @@ NULL
errmsg = "no such module with that name"; errmsg = "no such module with that name";
break; break;
case EBUSY: case EBUSY:
errmsg = "the module exports one or more module-side data types, can't unload"; errmsg = "the module exports one or more module-side data "
"types, can't unload";
break;
case EPERM:
errmsg = "the module exports APIs used by other modules. "
"Please unload them first and try again";
break; break;
default: default:
errmsg = "operation not possible."; errmsg = "operation not possible.";
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment