From cc3fb5bcb648949a73b77609a93600fbc6cef3ed Mon Sep 17 00:00:00 2001
From: George Joseph <george.joseph@fairview5.com>
Date: Sat, 30 Aug 2014 17:22:00 +0000
Subject: [PATCH] manager: Make WaitEvent action respect eventfilters

A WaitEvent issued via an http session isn't respecting eventfilters defined
for the user. I just added a match_filter to the predicate that controls
astman_append.

Tested by: George Joseph
Review: https://reviewboard.asterisk.org/r/3958/
........

Merged revisions 422439 from http://svn.asterisk.org/svn/asterisk/branches/1.8


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@422440 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/manager.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/main/manager.c b/main/manager.c
index 381e10aafe..8c44f7cbfb 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -1200,6 +1200,8 @@ static void free_channelvars(void);
 
 static enum add_filter_result manager_add_filter(const char *filter_pattern, struct ao2_container *whitefilters, struct ao2_container *blackfilters);
 
+static int match_filter(struct mansession *s, char *eventdata);
+
 /*!
  * \internal
  * \brief Find a registered action object.
@@ -3205,8 +3207,9 @@ static int action_waitevent(struct mansession *s, const struct message *m)
 		struct eventqent *eqe = s->session->last_ev;
 		astman_send_response(s, m, "Success", "Waiting for Event completed.");
 		while ((eqe = advance_event(eqe))) {
-			if (((s->session->readperm & eqe->category) == eqe->category) &&
-			    ((s->session->send_events & eqe->category) == eqe->category)) {
+			if (((s->session->readperm & eqe->category) == eqe->category)
+				&& ((s->session->send_events & eqe->category) == eqe->category)
+				&& match_filter(s, eqe->eventdata)) {
 				astman_append(s, "%s", eqe->eventdata);
 			}
 			s->session->last_ev = eqe;
-- 
GitLab