]> git.sur5r.net Git - openldap/commitdiff
don't cache queries that would not be answered correctly because of schema issues...
authorPierangelo Masarati <ando@openldap.org>
Thu, 4 Sep 2008 00:05:26 +0000 (00:05 +0000)
committerPierangelo Masarati <ando@openldap.org>
Thu, 4 Sep 2008 00:05:26 +0000 (00:05 +0000)
servers/slapd/overlays/pcache.c

index d73835662f6ef19f95a83e2907bc633721b65e0c..22b8355865071a9f1ba995656a1cb6415b219054 100644 (file)
@@ -1961,6 +1961,14 @@ pcache_op_cleanup( Operation *op, SlapReply *rs ) {
                 * limit, empty the chain and ignore the rest.
                 */
                if ( !si->over ) {
+                       /* check if the entry contains undefined
+                        * attributes/objectClasses (ITS#5680) */
+                       if ( test_filter( op, rs->sr_entry, si->query.filter ) != LDAP_COMPARE_TRUE ) {
+                               Debug( pcache_debug, "%s: query not cacheable because of schema issues in DN \"%s\"\n",
+                                       op->o_log_prefix, rs->sr_entry->e_name.bv_val, 0 );
+                               goto over;
+                       }
+
                        if ( si->count < si->max ) {
                                si->count++;
                                e = entry_dup( rs->sr_entry );
@@ -1969,6 +1977,7 @@ pcache_op_cleanup( Operation *op, SlapReply *rs ) {
                                si->tail = e;
 
                        } else {
+over:;
                                si->over = 1;
                                si->count = 0;
                                for (;si->head; si->head=e) {