]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/add.c
More ldapbis cleanup
[openldap] / servers / slapd / 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;
 }