From: Sean Bright Date: Mon, 7 Feb 2022 16:55:51 +0000 (-0500) Subject: manager.c: Simplify AMI ModuleCheck handling X-Git-Tag: 16.25.0-rc1~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a2eb55523073a169bc7f97e424b449ee31b5cecb;p=thirdparty%2Fasterisk.git manager.c: Simplify AMI ModuleCheck handling This code was needlessly complex and would fail to properly delimit the response message if LOW_MEMORY was defined. Change-Id: Iae50bf09ef4bc34f9dc4b49435daa76f8b2c5b6e --- diff --git a/main/manager.c b/main/manager.c index 1a1016f4b8..da10996177 100644 --- a/main/manager.c +++ b/main/manager.c @@ -6474,36 +6474,30 @@ static int action_loggerrotate(struct mansession *s, const struct message *m) /*! \brief Manager function to check if module is loaded */ static int manager_modulecheck(struct mansession *s, const struct message *m) { - int res; const char *module = astman_get_header(m, "Module"); const char *id = astman_get_header(m, "ActionID"); - char idText[256]; - char filename[PATH_MAX]; - char *cut; - ast_copy_string(filename, module, sizeof(filename)); - if ((cut = strchr(filename, '.'))) { - *cut = '\0'; - } else { - cut = filename + strlen(filename); - } - snprintf(cut, (sizeof(filename) - strlen(filename)) - 1, ".so"); - ast_debug(1, "**** ModuleCheck .so file %s\n", filename); - res = ast_module_check(filename); - if (!res) { + ast_debug(1, "**** ModuleCheck .so file %s\n", module); + if (!ast_module_check(module)) { astman_send_error(s, m, "Module not loaded"); return 0; } + astman_append(s, "Response: Success\r\n"); + if (!ast_strlen_zero(id)) { - snprintf(idText, sizeof(idText), "ActionID: %s\r\n", id); - } else { - idText[0] = '\0'; + astman_append(s, "ActionID: %s\r\n", id); } - astman_append(s, "Response: Success\r\n%s", idText); + #if !defined(LOW_MEMORY) - astman_append(s, "Version: %s\r\n\r\n", ""); + /* When we switched from subversion to git we lost the ability to + * retrieve the 'ASTERISK_FILE_VERSION' from that file, but we retain + * the response header here for backwards compatibility. */ + astman_append(s, "Version: \r\n"); #endif + + astman_append(s, "\r\n"); + return 0; }