aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-04-23 17:47:17 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-04-23 17:47:17 +0000
commitacbcc31439f648e5d3215b15b49e13424cc01cc0 (patch)
treeb10d720ed214e7efa3a482921367dfcc92957cff /apps
parentab84dae956dac0b1f2c3a450f314bafea2b5e3f8 (diff)
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
Diffstat (limited to 'apps')
-rw-r--r--apps/app_queue.c12
1 files 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")) {