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;
+ }
}
}
slap_schema.si_ad_modifyTimestamp, ×tamp, NULL );
}
}
+
return LDAP_SUCCESS;
}
/* 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,