]> git.sur5r.net Git - openldap/commitdiff
return structuralObjectClass errors
authorKurt Zeilenga <kurt@openldap.org>
Sat, 16 Sep 2006 11:48:52 +0000 (11:48 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Sat, 16 Sep 2006 11:48:52 +0000 (11:48 +0000)
(likely need to be applied to other backends)

servers/slapd/add.c
servers/slapd/back-bdb/add.c

index b69f7a720dedc6c5f4893d21c83132018e30b3bd..e00f6d1a40973eabfcf7d3308999461abd511657 100644 (file)
@@ -639,10 +639,16 @@ int slap_add_opattrs(
                if ( oc ) {
                        rc = structural_class( oc->a_vals, &tmp, NULL, text,
                                textbuf, textlen );
-                       if( rc != LDAP_SUCCESS ) return rc;
-
-                       attr_merge_one( op->ora_e, slap_schema.si_ad_structuralObjectClass,
-                               &tmp, NULL );
+                       if( rc == LDAP_SUCCESS ) {
+                               attr_merge_one( op->ora_e,
+                                       slap_schema.si_ad_structuralObjectClass,
+                                       &tmp, NULL );
+
+                       } else if ( !SLAP_NO_SCHEMA_CHECK( op->o_bd ) &&
+                               !get_no_schema_check( op ) )
+                       {
+                               return rc;
+                       }
                }
        }
 
@@ -736,5 +742,6 @@ int slap_add_opattrs(
                                slap_schema.si_ad_modifyTimestamp, &timestamp, NULL );
                }
        }
+
        return LDAP_SUCCESS;
 }
index 918ee89a74ce51a620ca2d57da2e07b9bd81afd9..b66f19f6db0f36154bf0f5b0def3f8d6a2b68170 100644 (file)
@@ -93,7 +93,13 @@ txnReturn:
 
        /* add opattrs to shadow as well, only missing attrs will actually
         * be added; helps compatibility with older OL versions */
-       slap_add_opattrs( op, &rs->sr_text, textbuf, textlen, 1 );
+       rs->sr_err = slap_add_opattrs( op, &rs->sr_text, textbuf, textlen, 1 );
+       if ( rs->sr_err != LDAP_SUCCESS ) {
+               Debug( LDAP_DEBUG_TRACE,
+                       LDAP_XSTRING(bdb_add) ": entry failed op attrs add: "
+                       "%s (%d)\n", rs->sr_text, rs->sr_err, 0 );
+               goto return_results;
+       }
 
        /* check entry's schema */
        rs->sr_err = entry_schema_check( op, op->oq_add.rs_e, NULL,