From: George Joseph Date: Sat, 30 Aug 2014 17:22:55 +0000 (+0000) Subject: manager: Make WaitEvent action respect eventfilters X-Git-Tag: 12.6.0-rc1~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d59310cdcf10b0f7ccd3ed782363d2456f6c1d48;p=thirdparty%2Fasterisk.git 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 ........ Merged revisions 422440 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@422441 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/manager.c b/main/manager.c index b1e5748c94..0475729419 100644 --- a/main/manager.c +++ b/main/manager.c @@ -1309,6 +1309,8 @@ static AO2_GLOBAL_OBJ_STATIC(event_docs); 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); + /*! * @{ \brief Define AMI message types. */ @@ -3503,8 +3505,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;