From 16fccf140dfacf628fb8670efdba4a0682cb9c29 Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Mon, 7 Feb 2022 11:55:51 -0500 Subject: [PATCH] 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 --- main/manager.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/main/manager.c b/main/manager.c index 129ef38ba1..588f1446f6 100644 --- a/main/manager.c +++ b/main/manager.c @@ -6469,36 +6469,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; }