diff --git a/apps/app_queue.c b/apps/app_queue.c index d91a020135ad801afcbf92e5ed7258e64c48eb2d..522c602c191248835735ad497d85992dfbc1a100 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -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)