diff --git a/src/dht.cpp b/src/dht.cpp
index 5400828cf3074918d0f2f6a24b518ae1cabc80b5..aacb235b0c1b245849ca719251d9acd6757d6b69 100644
--- a/src/dht.cpp
+++ b/src/dht.cpp
@@ -537,7 +537,7 @@ Dht::searchSynchedNodeListen(const Sp<Search>& sr, SearchNode& n)
                     if (auto sr = ws.lock()) {
                         auto l = sr->listeners.find(list_token);
                         if (l != sr->listeners.end()) {
-                            l->second.get_cb(l->second.filter.filter(values), expired);
+                            l->second.get_cb(values, expired);
                         }
                     }
                 }, [ws,list_token] (ListenSyncStatus status) {
diff --git a/src/search.h b/src/search.h
index 80dca94aad8778f2241bef92ff076b6059e490f7..ebedcc170b417f9de63b2832c321fa46c77a4835 100644
--- a/src/search.h
+++ b/src/search.h
@@ -387,7 +387,6 @@ struct Dht::Search {
     /* listeners */
     struct SearchListener {
         Sp<Query> query;
-        Value::Filter filter;
         ValueCallback get_cb;
         SyncCallback sync_cb;
     };
@@ -504,7 +503,7 @@ struct Dht::Search {
         return cache.listen(cb, q, f, [&](const Sp<Query>& q, ValueCallback vcb, SyncCallback scb){
             done = false;
             auto token = ++listener_token;
-            listeners.emplace(token, SearchListener{q, f, vcb, scb});
+            listeners.emplace(token, SearchListener{q, vcb, scb});
             scheduler.edit(nextSearchStep, scheduler.time());
             return token;
         });