summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES15
-rw-r--r--main/manager.c11
2 files changed, 24 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index 2f84e4cce..abe6a0441 100644
--- 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 -------------
------------------------------------------------------------------------------
diff --git a/main/manager.c b/main/manager.c
index d2a76bd02..077fb013e 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -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);