diff --git a/apps/sbc/HeaderFilter.cpp b/apps/sbc/HeaderFilter.cpp index 7838a2ce..46e16d8c 100644 --- a/apps/sbc/HeaderFilter.cpp +++ b/apps/sbc/HeaderFilter.cpp @@ -28,6 +28,7 @@ #include "log.h" #include "AmUtils.h" #include +#include const char* FilterType2String(FilterType ft) { switch(ft) { @@ -216,11 +217,13 @@ int inplaceHeaderFilter(string& hdrs, const vector& filter_list) { } 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::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));