This commit is contained in:
Anthony Minessale 2011-03-07 10:35:32 -06:00
parent c79bfa768a
commit 30813ca58a

View File

@ -305,56 +305,60 @@ static void event_handler(switch_event_t *event)
} }
} }
if (send && l->filters && l->filters->headers) { if (send) {
switch_event_header_t *hp;
const char *hval;
send = 0;
switch_mutex_lock(l->filter_mutex); switch_mutex_lock(l->filter_mutex);
for (hp = l->filters->headers; hp; hp = hp->next) {
if ((hval = switch_event_get_header(event, hp->name))) {
const char *comp_to = hp->value;
int pos = 1, cmp = 0;
while (comp_to && *comp_to) { if (l->filters && l->filters->headers) {
if (*comp_to == '+') { switch_event_header_t *hp;
pos = 1; const char *hval;
} else if (*comp_to == '-') {
pos = 0; send = 0;
} else if (*comp_to != ' ') {
break; for (hp = l->filters->headers; hp; hp = hp->next) {
if ((hval = switch_event_get_header(event, hp->name))) {
const char *comp_to = hp->value;
int pos = 1, cmp = 0;
while (comp_to && *comp_to) {
if (*comp_to == '+') {
pos = 1;
} else if (*comp_to == '-') {
pos = 0;
} else if (*comp_to != ' ') {
break;
}
comp_to++;
} }
comp_to++;
}
if (send && pos) { if (send && pos) {
continue; continue;
} }
if (!comp_to) { if (!comp_to) {
continue; continue;
} }
if (*hp->value == '/') { if (*hp->value == '/') {
switch_regex_t *re = NULL; switch_regex_t *re = NULL;
int ovector[30]; int ovector[30];
cmp = !!switch_regex_perform(hval, comp_to, &re, ovector, sizeof(ovector) / sizeof(ovector[0])); cmp = !!switch_regex_perform(hval, comp_to, &re, ovector, sizeof(ovector) / sizeof(ovector[0]));
switch_regex_safe_free(re); switch_regex_safe_free(re);
} else {
cmp = !strcasecmp(hval, comp_to);
}
if (cmp) {
if (pos) {
send = 1;
} else { } else {
send = 0; cmp = !strcasecmp(hval, comp_to);
break; }
if (cmp) {
if (pos) {
send = 1;
} else {
send = 0;
break;
}
} }
} }
} }
switch_mutex_unlock(l->filter_mutex);
} }
switch_mutex_unlock(l->filter_mutex);
} }
if (send && switch_test_flag(l, LFLAG_MYEVENTS)) { if (send && switch_test_flag(l, LFLAG_MYEVENTS)) {