]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
manager.c: Simplify AMI ModuleCheck handling
authorSean Bright <sean.bright@gmail.com>
Mon, 7 Feb 2022 16:55:51 +0000 (11:55 -0500)
committerSean Bright <sean.bright@gmail.com>
Mon, 7 Feb 2022 17:04:23 +0000 (12:04 -0500)
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

index 1a1016f4b88bf30b1a997c371d296d0d59a5a073..da10996177e5f13cfe4caf1f230d6848aa9390df 100644 (file)
@@ -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;
 }