TT#53685 add header filter wildcard match support

'*' - matches 0 or more characters
    '?' - matches any one character
    for more info, refer to <fnmatch.h>

Change-Id: Icbe450b7921d541fed089a1bb00c180e416c34ae
(cherry picked from commit e3f342754a)
mr7.2.1
Kirill Solomko 8 years ago
parent 981b46659d
commit ad0e349fa1

@ -32,3 +32,4 @@ sipwise/usage-reporting.patch
sipwise/session_timers
sipwise/introduce_forcesdp_from_pbx.patch
sipwise/0001-TT-34704-Fix-sems-and-sems-pbx-to-write-pid-file-whe.patch
sipwise/0001-TT-53685-add_header_pattern_match_support.patch

@ -0,0 +1,29 @@
--- a/apps/sbc/HeaderFilter.cpp
+++ b/apps/sbc/HeaderFilter.cpp
@@ -28,6 +28,7 @@
#include "log.h"
#include "AmUtils.h"
#include <algorithm>
+#include <fnmatch.h>
const char* FilterType2String(FilterType ft) {
switch(ft) {
@@ -216,11 +217,13 @@
}
string hdr_name = hdrs.substr(start_pos, name_end-start_pos);
std::transform(hdr_name.begin(), hdr_name.end(), hdr_name.begin(), ::tolower);
- bool erase = false;
- if (f_type == Whitelist) {
- erase = headerfilter_list.find(hdr_name)==headerfilter_list.end();
- } else if (f_type == Blacklist) {
- erase = headerfilter_list.find(hdr_name)!=headerfilter_list.end();
+ bool erase = (f_type == Whitelist);
+ for (set<string>::iterator it = headerfilter_list.begin();
+ it != headerfilter_list.end(); ++it) {
+ if (fnmatch(it->c_str(), hdr_name.c_str(), 0) == 0) {
+ erase = (f_type != Whitelist);
+ break;
+ }
}
if (erase) {
DBG("erasing header '%s' by %s\n", hdr_name.c_str(), FilterType2String(f_type));
Loading…
Cancel
Save