]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/search.c
Merge remote-tracking branch 'origin/mdb.master'
[openldap] / servers / slapd / back-meta / search.c
index 9aabda0b233971555e1fed5337ea9335e78094d5..eec9d5823448b64004c6aef8d8697adbecfa83c5 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2013 The OpenLDAP Foundation.
+ * Copyright 1999-2014 The OpenLDAP Foundation.
  * Portions Copyright 2001-2003 Pierangelo Masarati.
  * Portions Copyright 1999-2003 Howard Chu.
  * All rights reserved.
@@ -548,6 +548,20 @@ meta_back_search_start(
                }
        }
 
+       /* check filter expression */
+       if ( mt->mt_filter ) {
+               metafilter_t *mf;
+               for ( mf = mt->mt_filter; mf; mf = mf->mf_next ) {
+                       if ( regexec( &mf->mf_regex, op->ors_filterstr.bv_val, 0, NULL, 0 ) == 0 )
+                               break;
+               }
+               /* nothing matched, this target is no longer a candidate */
+               if ( !mf ) {
+                       retcode = META_SEARCH_NOT_CANDIDATE;
+                       goto doreturn;
+               }
+       }
+
        /* initiate dobind */
        retcode = meta_search_dobind_init( op, rs, mcp, candidate, candidates );