From: Luke Howard Date: Thu, 21 Jul 2005 17:34:16 +0000 (+0000) Subject: Fix some SLAPI bugs X-Git-Tag: OPENLDAP_AC_BP~290 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=ee770389d1b1494fa4277e2447ce53150fb0f499;p=openldap Fix some SLAPI bugs --- diff --git a/servers/slapd/slapi/slapi_overlay.c b/servers/slapd/slapi/slapi_overlay.c index 2a872d7f4c..4b06bfb74e 100644 --- a/servers/slapd/slapi/slapi_overlay.c +++ b/servers/slapd/slapi/slapi_overlay.c @@ -138,15 +138,17 @@ slapi_over_search( Operation *op, SlapReply *rs, int type ) slapi_pblock_set( pb, SLAPI_SEARCH_RESULT_ENTRY, (void *)rs->sr_entry ); rc = slapi_int_call_plugins( op->o_bd, type, pb ); - if ( rc == 0 ) + if ( rc >= 0 ) /* 1 means no plugins called */ rc = SLAP_CB_CONTINUE; + else + rc = LDAP_SUCCESS; /* confusing: don't abort, but don't send */ - if ( rs->sr_type == REP_SEARCH ) { + if ( rc == SLAP_CB_CONTINUE && rs->sr_type == REP_SEARCH ) { /* XXX we shouldn't need this here */ slapi_over_operational( op, rs ); } - slapi_pblock_set( pb, SLAPI_RESCONTROLS, NULL ); + slapi_pblock_set( pb, SLAPI_RESCONTROLS, NULL ); /* don't free */ slapi_pblock_destroy(pb); return rc; @@ -203,27 +205,21 @@ slapi_over_result( Operation *op, SlapReply *rs, int type ) { int rc; - slapi_pblock_set( op->o_pb, SLAPI_RESULT_CODE, (void *)rs->sr_err ); - slapi_pblock_set( op->o_pb, SLAPI_RESULT_TEXT, (void *)rs->sr_text ); + slapi_pblock_set( op->o_pb, SLAPI_RESULT_CODE, (void *)rs->sr_err ); + slapi_pblock_set( op->o_pb, SLAPI_RESULT_TEXT, (void *)rs->sr_text ); slapi_pblock_set( op->o_pb, SLAPI_RESULT_MATCHED, (void *)rs->sr_matched ); rc = slapi_int_call_plugins( op->o_bd, type, op->o_pb ); - if ( rc < 0 ) { - return rc; - } - - slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void **)&rs->sr_err ); - slapi_pblock_get( op->o_pb, SLAPI_RESULT_TEXT, (void **)&rs->sr_text ); + + slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void **)&rs->sr_err ); + slapi_pblock_get( op->o_pb, SLAPI_RESULT_TEXT, (void **)&rs->sr_text ); slapi_pblock_get( op->o_pb, SLAPI_RESULT_MATCHED, (void **)&rs->sr_matched ); - if ( rc == 0 && type == SLAPI_PLUGIN_PRE_RESULT_FN ) { + if ( type == SLAPI_PLUGIN_PRE_RESULT_FN ) { rc = slapi_over_merge_controls( op, rs, op->o_pb ); } - if ( rc == 0 ) - rc = SLAP_CB_CONTINUE; - - return rc; + return SLAP_CB_CONTINUE; } static int