From acbcc31439f648e5d3215b15b49e13424cc01cc0 Mon Sep 17 00:00:00 2001 From: mmichelson Date: Thu, 23 Apr 2009 17:47:17 +0000 Subject: Merged revisions 190250 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ........ r190250 | mmichelson | 2009-04-23 12:45:35 -0500 (Thu, 23 Apr 2009) | 9 lines Fix reversed behavior of leavewhenempty option in queues.conf. (closes issue #14650) Reported by: alecdavis Patches: 14650.patch uploaded by mmichelson (license 60) Tested by: mmichelson, lmadsen ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@190253 f38db490-d61c-443f-a65b-d21fe96a405b --- apps/app_queue.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/app_queue.c b/apps/app_queue.c index 0d59041ca..b3be828f6 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -1303,7 +1303,7 @@ static int insert_penaltychange (const char *list_name, const char *content, con return 0; } -static void parse_empty_options(const char *value, enum empty_conditions *empty) +static void parse_empty_options(const char *value, enum empty_conditions *empty, int joinempty) { char *value_copy = ast_strdupa(value); char *option = NULL; @@ -1328,10 +1328,12 @@ static void parse_empty_options(const char *value, enum empty_conditions *empty) *empty = (QUEUE_EMPTY_PENALTY | QUEUE_EMPTY_INVALID); } else if (!strcasecmp(option, "strict")) { *empty = (QUEUE_EMPTY_PENALTY | QUEUE_EMPTY_INVALID | QUEUE_EMPTY_PAUSED | QUEUE_EMPTY_UNAVAILABLE); - } else if (ast_false(option)) { + } else if ((ast_false(option) && joinempty) || (ast_true(option) && !joinempty)) { *empty = (QUEUE_EMPTY_PENALTY | QUEUE_EMPTY_INVALID | QUEUE_EMPTY_PAUSED); - } else if (ast_true(option)) { + } else if ((ast_false(option) && !joinempty) || (ast_true(option) && joinempty)) { *empty = 0; + } else { + ast_log(LOG_WARNING, "Unknown option %s for '%s'\n", option, joinempty ? "joinempty" : "leavewhenempty"); } } } @@ -1496,9 +1498,9 @@ static void queue_set_param(struct call_queue *q, const char *param, const char } q->strategy = strategy; } else if (!strcasecmp(param, "joinempty")) { - parse_empty_options(val, &q->joinempty); + parse_empty_options(val, &q->joinempty, 1); } else if (!strcasecmp(param, "leavewhenempty")) { - parse_empty_options(val, &q->leavewhenempty); + parse_empty_options(val, &q->leavewhenempty, 0); } else if (!strcasecmp(param, "eventmemberstatus")) { q->maskmemberstatus = !ast_true(val); } else if (!strcasecmp(param, "eventwhencalled")) { -- cgit v1.2.3