]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
manager: Make WaitEvent action respect eventfilters
authorGeorge Joseph <george.joseph@fairview5.com>
Sat, 30 Aug 2014 17:19:07 +0000 (17:19 +0000)
committerGeorge Joseph <george.joseph@fairview5.com>
Sat, 30 Aug 2014 17:19:07 +0000 (17:19 +0000)
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/

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@422439 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index 830600c9ab9ef349ff8c79899fcf4f687038ea02..27b6739ca812f770349c7d49ebaa3627d520f78f 100644 (file)
@@ -1062,6 +1062,8 @@ static AST_RWLIST_HEAD_STATIC(manager_hooks, manager_custom_hook);
 
 static void free_channelvars(void);
 
+static int match_filter(struct mansession *s, char *eventdata);
+
 /*!
  * \internal
  * \brief Find a registered action object.
@@ -3019,8 +3021,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;