app_queue: Fix CLI "queue remove member" queue_log entry.
[asterisk/asterisk.git] / apps / app_queue.c
index d91a020..522c602 100644 (file)
@@ -9727,6 +9727,7 @@ static char *handle_queue_remove_member(struct ast_cli_entry *e, int cmd, struct
 {
        const char *queuename, *interface;
        struct member *mem = NULL;
+       char *res = CLI_FAILURE;
 
        switch (cmd) {
        case CLI_INIT:
@@ -9748,36 +9749,39 @@ static char *handle_queue_remove_member(struct ast_cli_entry *e, int cmd, struct
        queuename = a->argv[5];
        interface = a->argv[3];
 
+       if (log_membername_as_agent) {
+               mem = find_member_by_queuename_and_interface(queuename, interface);
+       }
+
        switch (remove_from_queue(queuename, interface)) {
        case RES_OKAY:
-               if (log_membername_as_agent) {
-                       mem = find_member_by_queuename_and_interface(queuename, interface);
-               }
                if (!mem || ast_strlen_zero(mem->membername)) {
                        ast_queue_log(queuename, "CLI", interface, "REMOVEMEMBER", "%s", "");
                } else {
                        ast_queue_log(queuename, "CLI", mem->membername, "REMOVEMEMBER", "%s", "");
                }
-               if (mem) {
-                       ao2_ref(mem, -1);
-               }
                ast_cli(a->fd, "Removed interface %s from queue '%s'\n", interface, queuename);
-               return CLI_SUCCESS;
+               res = CLI_SUCCESS;
+               break;
        case RES_EXISTS:
                ast_cli(a->fd, "Unable to remove interface '%s' from queue '%s': Not there\n", interface, queuename);
-               return CLI_FAILURE;
+               break;
        case RES_NOSUCHQUEUE:
                ast_cli(a->fd, "Unable to remove interface from queue '%s': No such queue\n", queuename);
-               return CLI_FAILURE;
+               break;
        case RES_OUTOFMEMORY:
                ast_cli(a->fd, "Out of memory\n");
-               return CLI_FAILURE;
+               break;
        case RES_NOT_DYNAMIC:
                ast_cli(a->fd, "Unable to remove interface '%s' from queue '%s': Member is not dynamic\n", interface, queuename);
-               return CLI_FAILURE;
-       default:
-               return CLI_FAILURE;
+               break;
        }
+
+       if (mem) {
+               ao2_ref(mem, -1);
+       }
+
+       return res;
 }
 
 static char *complete_queue_pause_member(const char *line, const char *word, int pos, int state)