+
+#ifdef BDB_SUBENTRIES
+ if( subentry ) {
+#ifdef NEW_LOGGING
+ LDAP_LOG ( OPERATION, DETAIL1,
+ "bdb_add: no parent, cannot add subentry\n", 0, 0, 0 );
+#else
+ Debug( LDAP_DEBUG_TRACE,
+ "bdb_add: no parent, cannot add subentry\n",
+ 0, 0, 0 );
+#endif
+ rc = LDAP_INSUFFICIENT_ACCESS;
+ text = "no parent, cannot add subentry";
+ goto return_results;;
+ }
+#endif
+#if 0
+ if ( ltid ) {
+ DBT obj;
+ obj.data = ",";
+ obj.size = 1;
+ rc = LOCK_GET( bdb->bi_dbenv, lockid, 0, &obj,
+ DB_LOCK_WRITE, &lock);
+ }
+#endif
+ }
+
+ rc = access_allowed( be, conn, op, e,
+ entry, NULL, ACL_WRITE, NULL );
+
+ switch( opinfo.boi_err ) {
+ case DB_LOCK_DEADLOCK:
+ case DB_LOCK_NOTGRANTED:
+ goto retry;
+ }
+
+ if ( ! rc ) {
+#ifdef NEW_LOGGING
+ LDAP_LOG ( OPERATION, DETAIL1,
+ "bdb_add: no write access to entry\n", 0, 0, 0 );
+#else
+ Debug( LDAP_DEBUG_TRACE, "bdb_add: no write access to entry\n",
+ 0, 0, 0 );
+#endif
+ rc = LDAP_INSUFFICIENT_ACCESS;
+ text = "no write access to entry";
+ goto return_results;;