add support for event suppression for AMI-over-HTTP
authorKevin P. Fleming <kpfleming@digium.com>
Wed, 26 Nov 2008 21:09:58 +0000 (21:09 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Wed, 26 Nov 2008 21:09:58 +0000 (21:09 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@159629 65c4cc65-6c06-0410-ace0-fbb531ad65f3

CHANGES
main/manager.c

diff --git a/CHANGES b/CHANGES
index 2f84e4c..abe6a04 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -78,6 +78,21 @@ Miscellaneous
  * All deprecated CLI commands are removed from the sourcecode. They are now handled
    by the new clialiases module. See cli_aliases.conf.sample file.
 
+Asterisk Manager Interface
+--------------------------
+ * When using the AMI over HTTP, you can now include a 'SuppressEvents' header (with
+   a non-empty value) in your request. If you do this, any pending AMI events will
+   *not* be included in the response to your request as they would normally, but
+   will be left in the event queue for the next request you make to retrieve. For
+   some applications, this will allow you to guarantee that you will only see
+   events in responses to 'WaitEvent' actions, and can better know when to expect them.
+   To know whether the Asterisk server supports this header or not, your client can
+   inspect the first response back from the server to see if it includes this header:
+
+   Pragma: SuppressEvents
+
+   If this is included, the server supports event suppression.
+
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 1.6.0 to Asterisk 1.6.1  -------------
 ------------------------------------------------------------------------------
index d2a76bd..077fb01 100644 (file)
@@ -2974,8 +2974,14 @@ static int process_message(struct mansession *s, const struct message *m)
        }
        if (ret)
                return ret;
-       /* Once done with our message, deliver any pending events */
-       return process_events(s);
+       /* Once done with our message, deliver any pending events unless the
+          requester doesn't want them as part of this response.
+       */
+       if (ast_strlen_zero(astman_get_header(m, "SuppressEvents"))) {
+               return process_events(s);
+       } else {
+               return ret;
+       }
 }
 
 /*!
@@ -3796,6 +3802,7 @@ static struct ast_str *generic_http_callback(enum output_format format,
                       "Content-type: text/%s\r\n"
                       "Cache-Control: no-cache;\r\n"
                       "Set-Cookie: mansession_id=\"%08x\"; Version=\"1\"; Max-Age=%d\r\n"
+                      "Pragma: SuppressEvents\r\n"
                       "\r\n",
                        contenttype[format],
                        s->managerid, httptimeout);