-#if defined(LDAP_SLAPI)
- if ( funcAddr != NULL ) {
- rs->sr_err = slapi_pblock_set( pb, SLAPI_EXT_OP_REQ_OID,
- (void *)op->ore_reqoid.bv_val);
- if ( rs->sr_err != LDAP_SUCCESS ) {
- rs->sr_err = LDAP_OTHER;
- goto done;
- }
-
- rs->sr_err = slapi_pblock_set( pb, SLAPI_EXT_OP_REQ_VALUE,
- (void *)&reqdata);
- if ( rs->sr_err != LDAP_SUCCESS ) {
- rs->sr_err = LDAP_OTHER;
- goto done;
- }
-
- rs->sr_err = slapi_int_pblock_set_operation( pb, op );
- if ( rs->sr_err != LDAP_SUCCESS ) {
- rs->sr_err = LDAP_OTHER;
- goto done;
- }
-
- extop_rc = (*funcAddr)( pb );
- if ( extop_rc == SLAPI_PLUGIN_EXTENDED_SENT_RESULT ) {
- msg_sent = TRUE;
-
- } else if ( extop_rc == SLAPI_PLUGIN_EXTENDED_NOT_HANDLED ) {
- rs->sr_err = LDAP_PROTOCOL_ERROR;
- rs->sr_text = UNSUPPORTED_EXOP;
-
- } else {
- rs->sr_err = slapi_pblock_get( pb, SLAPI_EXT_OP_RET_OID,
- &rs->sr_rspoid);
- if ( rs->sr_err != LDAP_SUCCESS ) {
- goto done2;
- }
-
- rs->sr_err = slapi_pblock_get( pb, SLAPI_EXT_OP_RET_VALUE,
- &rs->sr_rspdata);
- if ( rs->sr_err != LDAP_SUCCESS ) {
- goto done2;
- }
-
- rs->sr_err = extop_rc;
- send_ldap_extended( op, rs );
- msg_sent = TRUE;
- }
-
-done2:;
- if ( rs->sr_err != LDAP_SUCCESS && msg_sent == FALSE ) {
- send_ldap_result( op, rs );
- }
-
- if ( rs->sr_rspoid != NULL ) {
- ch_free( (char *)rs->sr_rspoid );
- }
-
- if ( rs->sr_rspdata != NULL ) {
- ber_bvfree( rs->sr_rspdata );
- }
- } else
-#endif /* defined( LDAP_SLAPI ) */