]> git.sur5r.net Git - openldap/commitdiff
doPlugins return code fix
authorHoward Chu <hyc@openldap.org>
Mon, 14 Apr 2003 00:07:48 +0000 (00:07 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 14 Apr 2003 00:07:48 +0000 (00:07 +0000)
servers/slapd/add.c
servers/slapd/backend.c
servers/slapd/bind.c
servers/slapd/compare.c
servers/slapd/modify.c
servers/slapd/modrdn.c
servers/slapd/search.c
servers/slapd/slapi/plugin.c

index 208f882e66c9a6b2b02663365ce979ac7ee12b51..3deabac3d624c984069bcd443c9c560ab4ca3df2 100644 (file)
@@ -523,7 +523,7 @@ static int doPreAddPluginFNs( Operation *op )
        int rc;
 
        rc = doPluginFNs( op->o_bd, SLAPI_PLUGIN_PRE_ADD_FN, op->o_pb );
-       if ( rc != 0 ) {
+       if ( rc < 0 ) {
                /*
                 * A preoperation plugin failure will abort the
                 * entire operation.
@@ -549,7 +549,7 @@ static void doPostAddPluginFNs( Operation *op )
        int rc;
 
        rc = doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_ADD_FN, op->o_pb );
-       if ( rc != 0 ) {
+       if ( rc < 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, INFO, "do_add: add postoperation plugin failed\n",
                                0, 0, 0);
index 3ee3331675ac48ebb1a36401ab904d4e7fad51a6..752dcf41a9d7cd9919b3178cbd87dbc8bd3e8ce9 100644 (file)
@@ -694,7 +694,7 @@ backend_unbind( Operation *op, SlapReply *rs )
                slapi_pblock_set( pb, SLAPI_BACKEND, (void *)&backends[i] );
                rc = doPluginFNs( &backends[i], SLAPI_PLUGIN_PRE_UNBIND_FN,
                                (Slapi_PBlock *)pb );
-               if ( rc != 0 ) {
+               if ( rc < 0 ) {
                        /*
                         * A preoperation plugin failure will abort the
                         * entire operation.
@@ -717,7 +717,7 @@ backend_unbind( Operation *op, SlapReply *rs )
 
 #if defined( LDAP_SLAPI )
                if ( doPluginFNs( &backends[i], SLAPI_PLUGIN_POST_UNBIND_FN,
-                               (Slapi_PBlock *)pb ) != 0 ) {
+                               (Slapi_PBlock *)pb ) < 0 ) {
 #ifdef NEW_LOGGING
                        LDAP_LOG( OPERATION, INFO, "do_unbind: Unbind postoperation plugins "
                                        "failed\n", 0, 0, 0);
index b4c1cf72b104353f6856833eaac9734b68ee09e6..112f099e05262f594414651df115d025515448ef 100644 (file)
@@ -528,7 +528,7 @@ do_bind(
        slapi_pblock_set( pb, SLAPI_MANAGEDSAIT, (void *)(0) );
 
        rs->sr_err = doPluginFNs( op->o_bd, SLAPI_PLUGIN_PRE_BIND_FN, pb );
-       if ( rs->sr_err != SLAPI_BIND_SUCCESS ) {
+       if ( rs->sr_err < 0 ) {
                /*
                 * Binding is a special case for SLAPI plugins. It is
                 * possible for a bind plugin to be successful *and*
@@ -641,7 +641,7 @@ do_bind(
        }
 
 #if defined( LDAP_SLAPI )
-       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_BIND_FN, pb ) != 0 ) {
+       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_BIND_FN, pb ) < 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, INFO, "do_bind: Bind postoperation plugins failed\n",
                                0, 0, 0);
index d999b7c20ff5342e7e3e3c22d420104d212eaf37..fac29badddd33af8bb3c745c2f6c75dd839667fa 100644 (file)
@@ -260,7 +260,7 @@ do_compare(
        slapi_pblock_set( pb, SLAPI_COMPARE_VALUE, (void *)&value );
 
        rs->sr_err = doPluginFNs( op->o_bd, SLAPI_PLUGIN_PRE_COMPARE_FN, pb );
-       if ( rs->sr_err != 0 ) {
+       if ( rs->sr_err < 0 ) {
                /*
                 * A preoperation plugin failure will abort the
                 * entire operation.
@@ -287,7 +287,7 @@ do_compare(
        }
 
 #if defined( LDAP_SLAPI )
-       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_COMPARE_FN, pb ) != 0 ) {
+       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_COMPARE_FN, pb ) < 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, INFO, "do_compare: compare postoperation plugins "
                                "failed\n", 0, 0, 0 );
index 40529e4a81164a17457a120cc135aaf08dea9ae1..2ffa3767b0dc0fa1b013048a0f4c1f0d0eb387d6 100644 (file)
@@ -327,7 +327,7 @@ do_modify(
        slapi_pblock_set( pb, SLAPI_MODIFY_MODS, (void *)modv );
 
        rs->sr_err = doPluginFNs( op->o_bd, SLAPI_PLUGIN_PRE_MODIFY_FN, pb );
-       if ( rs->sr_err != 0 ) {
+       if ( rs->sr_err < 0 ) {
                /*
                 * A preoperation plugin failure will abort the
                 * entire operation.
@@ -355,8 +355,9 @@ do_modify(
         * Calling slapi_x_modifications2ldapmods() destroyed modlist so
         * we don't need to free it.
         */
-       slapi_pblock_get( pb, SLAPI_MODIFY_MODS, (void **)&modv );
-       modlist = slapi_x_ldapmods2modifications( modv );
+       if ( rs->sr_err == 0 ) {
+               slapi_pblock_get( pb, SLAPI_MODIFY_MODS, (void **)&modv );
+               modlist = slapi_x_ldapmods2modifications( modv );
 
        /*
         * NB: it is valid for the plugin to return no modifications
@@ -366,10 +367,11 @@ do_modify(
         * then slapi_x_ldapmods2modifications() above will return
         * NULL).
         */
-       if ( modlist == NULL ) {
-               rs->sr_err = LDAP_SUCCESS;
-               send_ldap_result( op, rs );
-               goto cleanup;
+               if ( modlist == NULL ) {
+                       rs->sr_err = LDAP_SUCCESS;
+                       send_ldap_result( op, rs );
+                       goto cleanup;
+               }
        }
 #endif /* defined( LDAP_SLAPI ) */
 
@@ -447,7 +449,7 @@ do_modify(
        }
 
 #if defined( LDAP_SLAPI )
-       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_MODIFY_FN, pb ) != 0 ) {
+       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_MODIFY_FN, pb ) < 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, INFO, "do_modify: modify postoperation plugins "
                                "failed\n", 0, 0, 0 );
index 8c5566375e88924581c1f8189e4aa0c8ad5ca486..90651da75d7e731e9b2094f8b22a00a011bb71b9 100644 (file)
@@ -319,7 +319,7 @@ do_modrdn(
        slapi_pblock_set( pb, SLAPI_MANAGEDSAIT, (void *)manageDSAit );
 
        rs->sr_err = doPluginFNs( op->o_bd, SLAPI_PLUGIN_PRE_MODRDN_FN, pb );
-       if ( rs->sr_err != 0 ) {
+       if ( rs->sr_err < 0 ) {
                /*
                 * A preoperation plugin failure will abort the
                 * entire operation.
@@ -378,7 +378,7 @@ do_modrdn(
        }
 
 #if defined( LDAP_SLAPI )
-       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_MODRDN_FN, pb ) != 0 ) {
+       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_MODRDN_FN, pb ) < 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, INFO, "do_modrdn: modrdn postoperation plugins "
                                "failed\n", 0, 0, 0 );
index f94198b2fd88cc26769a9534f1d3adaa18e5ce67..607bf02662d27c3df349b103c9d2994c4ca6e3e7 100644 (file)
@@ -448,7 +448,7 @@ static int doPreSearchPluginFNs( Operation *op )
        int rc;
 
        rc = doPluginFNs( op->o_bd, SLAPI_PLUGIN_PRE_SEARCH_FN, op->o_pb );
-       if ( rc != 0 ) {
+       if ( rc < 0 ) {
                /*
                 * A preoperation plugin failure will abort the
                 * entire operation.
@@ -494,7 +494,7 @@ static int doSearchRewriteFNs( Operation *op )
 
 static void doPostSearchPluginFNs( Operation *op )
 {
-       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_SEARCH_FN, op->o_pb ) != 0 ) {
+       if ( doPluginFNs( op->o_bd, SLAPI_PLUGIN_POST_SEARCH_FN, op->o_pb ) < 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, INFO, "doPostSearchPluginFNs: search postoperation plugins "
                                "failed\n", 0, 0, 0 );
index dbe02554b86cfe2b38063b9ce86e45b5d563dd1f..5deb32614713af15847a8a8d73f738107918cdeb 100644 (file)
@@ -637,6 +637,8 @@ doPluginFNs(
                 * failure (confirmed with SLAPI specification).
                 */
                if ( !SLAPI_PLUGIN_IS_POST_FN( funcType ) && rc != 0 ) {
+                       /* make sure errors are negative */
+                       if ( rc > 0 ) rc = 0 - rc;
                        break;
                }
        }