]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/modify.c
Add calls to module_init/module_kill to support dynamically loaded backends.
[openldap] / servers / slapd / back-bdb / modify.c
index bc50253073c24f89dcbab5b214b438b081886910..965bb0b0980dc13d514741dd9d355f3062397343 100644 (file)
@@ -166,9 +166,10 @@ int bdb_modify_internal(
                        e->e_ocflags = 0;
                }
 
-               /* check if modified attribute was indexed */
+               /* check if modified attribute was indexed
+                * but not in case of NOOP... */
                err = bdb_index_is_indexed( be, mod->sm_desc );
-               if ( err == LDAP_SUCCESS ) {
+               if ( err == LDAP_SUCCESS && !op->o_noop ) {
                        ap = attr_find( save_attrs, mod->sm_desc );
                        if ( ap ) ap->a_flags |= SLAP_ATTR_IXDEL;
 
@@ -179,17 +180,23 @@ int bdb_modify_internal(
 
        /* check that the entry still obeys the schema */
        rc = entry_schema_check( be, e, save_attrs, text, textbuf, textlen );
-       if ( rc != LDAP_SUCCESS ) {
+       if ( rc != LDAP_SUCCESS || op->o_noop ) {
                attrs_free( e->e_attrs );
                e->e_attrs = save_attrs;
+
+               if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG ( OPERATION, ERR, 
-                                       "bdb_modify_internal: entry failed schema check %s\n", 
-                                       *text, 0, 0 );
+                       LDAP_LOG ( OPERATION, ERR, "bdb_modify_internal: "
+                               "entry failed schema check %s\n", 
+                               *text, 0, 0 );
 #else
-               Debug( LDAP_DEBUG_ANY, "entry failed schema check: %s\n",
-                       *text, 0, 0 );
+                       Debug( LDAP_DEBUG_ANY,
+                               "entry failed schema check: %s\n",
+                               *text, 0, 0 );
 #endif
+               }
+
+               /* if NOOP then silently revert to saved attrs */
                return rc;
        }