]> git.sur5r.net Git - openldap/commitdiff
Add pblock_be_call() for calling against actual backend
authorLuke Howard <lukeh@openldap.org>
Wed, 27 Jul 2005 16:29:32 +0000 (16:29 +0000)
committerLuke Howard <lukeh@openldap.org>
Wed, 27 Jul 2005 16:29:32 +0000 (16:29 +0000)
servers/slapd/slapi/slapi_pblock.c

index 7081f4fd655b51063556d4b7983f39d7bf8091c6..077dac1cc800bd10645abf8dbc0b28aea93de371 100644 (file)
@@ -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 */