]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/delete.c
Never let ldif_parse_line() return a NULL value with success.
[openldap] / servers / slapd / back-bdb / delete.c
index 045e5e28bf8f9b180b53299d71231b6faf351f34..8d4c14e9c724c90b5b98205a085acb3eb1ee511d 100644 (file)
@@ -44,6 +44,10 @@ bdb_delete(
 
        int             noop = 0;
 
+#ifdef LDAP_CLIENT_UPDATE
+       Operation* ps_list;
+#endif
+
 #ifdef NEW_LOGGING
        LDAP_LOG ( OPERATION, ARGS,  "==> bdb_delete: %s\n", dn->bv_val, 0, 0 );
 #else
@@ -166,13 +170,14 @@ retry:    /* transaction retry */
                if ( !rc  ) {
 #ifdef NEW_LOGGING
                        LDAP_LOG ( OPERATION, DETAIL1, 
-                               "<=- bdb_delete: no access to parent\n", 0, 0, 0 );
+                               "<=- bdb_delete: no write access to parent\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
-                               "<=- bdb_delete: no access to parent\n",
+                               "<=- bdb_delete: no write access to parent\n",
                                0, 0, 0 );
 #endif
                        rc = LDAP_INSUFFICIENT_ACCESS;
+                       text = "no write access to parent";
                        goto return_results;
                }
 
@@ -205,6 +210,7 @@ retry:      /* transaction retry */
                                                "to parent\n", 0, 0, 0 );
 #endif
                                        rc = LDAP_INSUFFICIENT_ACCESS;
+                                       text = "no write access to parent";
                                        goto return_results;
                                }
 
@@ -300,13 +306,14 @@ retry:    /* transaction retry */
        if ( !rc  ) {
 #ifdef NEW_LOGGING
                LDAP_LOG ( OPERATION, DETAIL1, 
-                       "<=- bdb_delete: no access to entry\n", 0, 0, 0 );
+                       "<=- bdb_delete: no write access to entry\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
-                       "<=- bdb_delete: no access to entry\n",
+                       "<=- bdb_delete: no write access to entry\n",
                        0, 0, 0 );
 #endif
                rc = LDAP_INSUFFICIENT_ACCESS;
+               text = "no write access to entry";
                goto return_results;
        }
 
@@ -486,6 +493,14 @@ retry:     /* transaction retry */
 return_results:
        send_ldap_result( conn, op, rc, NULL, text, NULL, NULL );
 
+#ifdef LDAP_CLIENT_UPDATE
+        if ( rc == LDAP_SUCCESS && !noop ) {
+               LDAP_LIST_FOREACH( ps_list, &bdb->psearch_list, link ) {
+                       bdb_psearch( be, conn, op, ps_list, e, LCUP_PSEARCH_BY_DELETE );
+               }
+       }
+#endif /* LDAP_CLIENT_UPDATE */
+
        if(rc == LDAP_SUCCESS && bdb->bi_txn_cp ) {
                ldap_pvt_thread_yield();
                TXN_CHECKPOINT( bdb->bi_dbenv,