From: Jonathan Rose Date: Tue, 4 Sep 2012 19:26:02 +0000 (+0000) Subject: app_queue: Only log PAUSEALL/UNPAUSEALL when 1+ memebers changed. X-Git-Tag: 13.0.0-beta1~2589 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b02c65752ccfc2317693644c424d221339d57e19;p=thirdparty%2Fasterisk.git app_queue: Only log PAUSEALL/UNPAUSEALL when 1+ memebers changed. Prior to this patch, if pause or unpause was issued on an interface without specifying a specific queue, a PAUSEALL or UNPAUSEALL event would be logged in the queue log even if that interface wasn't a member of any queues. This patch changes it so that these events are only logged when at least one member of any queue exists for that interface. (closes issue AST-946) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/2079/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372148 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/CHANGES b/CHANGES index 8bcbf939eb..85dcfcbf60 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,16 @@ === and the other UPGRADE files for older releases. === ============================================================================== +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 11 to Asterisk 12 -------------------- +------------------------------------------------------------------------------ + +Logging +------------------- + * When performing queue pause/unpause on an interface without specifying an + individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at + least one member of any queue exists for that interface. + ------------------------------------------------------------------------------ --- Functionality changes from Asterisk 10 to Asterisk 11 -------------------- ------------------------------------------------------------------------------ diff --git a/apps/app_queue.c b/apps/app_queue.c index 8cc6cc1a5c..b94f1de16d 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -5944,11 +5944,6 @@ static int set_member_paused(const char *queuename, const char *interface, const struct ao2_iterator queue_iter; int failed; - /* Special event for when all queues are paused - individual events still generated */ - /* XXX In all other cases, we use the membername, but since this affects all queues, we cannot */ - if (ast_strlen_zero(queuename)) - ast_queue_log("NONE", "NONE", interface, (paused ? "PAUSEALL" : "UNPAUSEALL"), "%s", ""); - queue_iter = ao2_iterator_init(queues, 0); while ((q = ao2_t_iterator_next(&queue_iter, "Iterate over queues"))) { ao2_lock(q); @@ -5971,6 +5966,16 @@ static int set_member_paused(const char *queuename, const char *interface, const continue; } found++; + + /* Before we do the PAUSE/UNPAUSE log, if this was a PAUSEALL/UNPAUSEALL, log that here, but only on the first found entry. */ + if (found == 1) { + + /* XXX In all other cases, we use the membername, but since this affects all queues, we cannot */ + if (ast_strlen_zero(queuename)) { + ast_queue_log("NONE", "NONE", interface, (paused ? "PAUSEALL" : "UNPAUSEALL"), "%s", ""); + } + } + mem->paused = paused; if (queue_persistent_members) {