]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/dyngroup.c
don't search max CSN if don't have a value; try the operational_attrs if entryCSN...
[openldap] / servers / slapd / overlays / dyngroup.c
index d16f4df0e1b5912d9050b648758bc508a163b7f5..dd056fc39bc3743ee9d2e9c4d3842a0898b20ecb 100644 (file)
@@ -64,10 +64,18 @@ dyngroup_response( Operation *op, SlapReply *rs )
                                int cache = op->o_do_not_cache;
                                
                                op->o_do_not_cache = 1;
-                               if ( backend_group( op, NULL, &op->o_req_ndn,
-                                       &op->oq_compare.rs_ava->aa_value, NULL, ap->ap_uri ) == 0 )
-                                       rs->sr_err = LDAP_COMPARE_TRUE;
+                               rs->sr_err = backend_group( op, NULL, &op->o_req_ndn,
+                                       &op->oq_compare.rs_ava->aa_value, NULL, ap->ap_uri );
                                op->o_do_not_cache = cache;
+                               switch ( rs->sr_err ) {
+                               case LDAP_SUCCESS:
+                                       rs->sr_err = LDAP_COMPARE_TRUE;
+                                       break;
+
+                               case LDAP_NO_SUCH_OBJECT:
+                                       rs->sr_err = LDAP_COMPARE_FALSE;
+                                       break;
+                               }
                                break;
                        }
                }
@@ -145,7 +153,7 @@ static slap_overinst dyngroup;
  * initialized and registered by some other function inside slapd.
  */
 
-int dyngroup_init() {
+int dyngroup_initialize() {
        dyngroup.on_bi.bi_type = "dyngroup";
        dyngroup.on_bi.bi_db_config = dyngroup_config;
        dyngroup.on_bi.bi_db_close = dyngroup_close;
@@ -155,8 +163,10 @@ int dyngroup_init() {
 }
 
 #if SLAPD_OVER_DYNGROUP == SLAPD_MOD_DYNAMIC
-int init_module(int argc, char *argv[]) {
-       return dyngroup_init();
+int
+init_module( int argc, char *argv[] )
+{
+       return dyngroup_initialize();
 }
 #endif