From 06f8a27771fffc301439525dad0ddad44caf9432 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Wed, 27 Jul 2005 16:29:32 +0000 Subject: [PATCH] Add pblock_be_call() for calling against actual backend --- servers/slapd/slapi/slapi_pblock.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/servers/slapd/slapi/slapi_pblock.c b/servers/slapd/slapi/slapi_pblock.c index 7081f4fd65..077dac1cc8 100644 --- a/servers/slapd/slapi/slapi_pblock.c +++ b/servers/slapd/slapi/slapi_pblock.c @@ -420,6 +420,24 @@ pblock_set_default( Slapi_PBlock *pb, int param, void *value ) return PBLOCK_SUCCESS; } +static int +pblock_be_call( Slapi_PBlock *pb, int (*bep)(Operation *) ) +{ + BackendDB *be_orig; + Operation *op; + int rc; + + PBLOCK_ASSERT_OP( pb, 0 ); + op = pb->pb_op; + + be_orig = op->o_bd; + op->o_bd = select_backend( &op->o_req_ndn, 0, 0 ); + rc = (*bep)( op ); + op->o_bd = be_orig; + + return rc; +} + static int pblock_get( Slapi_PBlock *pb, int param, void **value ) { @@ -485,12 +503,10 @@ pblock_get( Slapi_PBlock *pb, int param, void **value ) *((char **)value) = pb->pb_op->o_req_ndn.bv_val; break; case SLAPI_REQUESTOR_ISROOT: - PBLOCK_ASSERT_OP( pb, 0 ); - *((int *)value) = be_isroot( pb->pb_op ); + *((int *)value) = pblock_be_call( pb, be_isroot ); break; case SLAPI_IS_REPLICATED_OPERATION: - PBLOCK_ASSERT_OP( pb, 0 ); - *((int *)value) = be_isupdate( pb->pb_op ); + *((int *)value) = pblock_be_call( pb, be_slurp_update ); break; case SLAPI_CONN_AUTHTYPE: case SLAPI_CONN_AUTHMETHOD: /* XXX should return SASL mech */ -- 2.39.5