mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-13 12:40:17 +00:00
FS-3130
This commit is contained in:
parent
c79bfa768a
commit
30813ca58a
@ -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)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user