]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/delete.c
Added proposed request parameters to Operation. #ifdef'd, not active.
[openldap] / servers / slapd / delete.c
index 8b00c39b71b67c0c13435479343a0242067b5f7d..89d3a8d49f4616740a5fbf3c6e573bffd81cdf6a 100644 (file)
@@ -16,7 +16,6 @@
  */
 
 #include "portable.h"
-#include "slapi_common.h"
 
 #include <stdio.h>
 
 
 #include "ldap_pvt.h"
 #include "slap.h"
+
+#ifdef LDAP_SLAPI
 #include "slapi.h"
+#endif
 
 int
 do_delete(
@@ -41,7 +43,9 @@ do_delete(
        int rc;
        int manageDSAit;
 
+#ifdef LDAP_SLAPI
        Slapi_PBlock *pb = op->o_pb;
+#endif
 
 #ifdef NEW_LOGGING
        LDAP_LOG( OPERATION, ENTRY, 
@@ -154,32 +158,29 @@ do_delete(
                goto cleanup;
        }
 
-       /* deref suffix alias if appropriate */
-       suffix_alias( be, &ndn );
-
 #if defined( LDAP_SLAPI )
-       slapi_pblock_set( pb, SLAPI_BACKEND, (void *)be );
-       slapi_pblock_set( pb, SLAPI_CONNECTION, (void *)conn );
-       slapi_pblock_set( pb, SLAPI_OPERATION, (void *)op );
-       slapi_pblock_set( pb, SLAPI_BIND_TARGET, (void *)dn.bv_val );
-       slapi_pblock_set( pb, SLAPI_MANAGEDSAIT, (void *)(1) );
-       slapi_pblock_set( pb, SLAPI_REQCONTROLS, (void *)op->o_ctrls );
+       slapi_x_backend_set_pb( pb, be );
+       slapi_x_connection_set_pb( pb, conn );
+       slapi_x_operation_set_pb( pb, op );
+       slapi_pblock_set( pb, SLAPI_DELETE_TARGET, (void *)dn.bv_val );
+       slapi_pblock_set( pb, SLAPI_MANAGEDSAIT, (void *)manageDSAit );
 
        rc = doPluginFNs( be, SLAPI_PLUGIN_PRE_DELETE_FN, pb );
-       if ( rc != 0 && rc != LDAP_OTHER ) {
+       if ( rc != 0 ) {
                /*
-                * either there is no preOp (delete) plugins
-                * or a plugin failed. Just log it
-                *
-                * FIXME: is this correct?
+                * A preoperation plugin failure will abort the
+                * entire operation.
                 */
 #ifdef NEW_LOGGING
-               LDAP_LOG( OPERATION, INFO, "do_delete: delete preOps "
+               LDAP_LOG( OPERATION, INFO, "do_delete: delete preoperation plugin "
                                "failed\n", 0, 0, 0 );
 #else
-               Debug (LDAP_DEBUG_TRACE, "do_delete: delete preOps failed.\n",
+               Debug (LDAP_DEBUG_TRACE, "do_delete: delete preoperation plugin failed.\n",
                                0, 0, 0);
 #endif
+               if ( slapi_pblock_get( pb, SLAPI_RESULT_CODE, (void *)&rc ) != 0 )
+                       rc = LDAP_OTHER;
+               goto cleanup;
        }
 #endif /* defined( LDAP_SLAPI ) */
 
@@ -224,19 +225,12 @@ do_delete(
        }
 
 #if defined( LDAP_SLAPI )
-       rc = doPluginFNs( be, SLAPI_PLUGIN_POST_DELETE_FN, pb );
-       if ( rc != 0 && rc != LDAP_OTHER ) {
-               /*
-                * either there is no postOp (delete) plugins
-                * or a plugin failed. Just log it
-                *
-                * FIXME: is this correct?
-                */
+       if ( doPluginFNs( be, SLAPI_PLUGIN_POST_DELETE_FN, pb ) != 0) {
 #ifdef NEW_LOGGING
-               LDAP_LOG( OPERATION, INFO, "do_delete: delete postOps "
+               LDAP_LOG( OPERATION, INFO, "do_delete: delete postoperation plugins "
                                "failed\n", 0, 0, 0 );
 #else
-               Debug(LDAP_DEBUG_TRACE, "do_delete: delete postOps "
+               Debug(LDAP_DEBUG_TRACE, "do_delete: delete postoperation plugins "
                                "failed.\n", 0, 0, 0);
 #endif
        }