--- 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));
