Diff for /servers/slapd/back-relay/op.c between versions 1.5 and 1.6

version 1.5, 2004/03/17 10:14:30 version 1.6, 2004/03/17 21:37:59
Line 1 Line 1
 /* op.c - relay backend operations */  /* op.c - relay backend operations */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 2003-2004 The OpenLDAP Foundation.   * Copyright 2004 The OpenLDAP Foundation.
  * Portions Copyright 2004 Pierangelo Masarati.   * Portions Copyright 2004 Pierangelo Masarati.
  * All rights reserved.   * All rights reserved.
  *   *
Line 37  relay_back_swap_bd( struct slap_op *op, Line 37  relay_back_swap_bd( struct slap_op *op,
         return SLAP_CB_CONTINUE;          return SLAP_CB_CONTINUE;
 }  }
   
   static void
   relay_back_add_cb( slap_callback *cb, struct slap_op *op )
   {
                   cb->sc_next = op->o_callback;
                   cb->sc_response = relay_back_swap_bd;
                   cb->sc_cleanup = relay_back_swap_bd;
                   cb->sc_private = op->o_bd;
                   op->o_callback = cb;
   }
   
 static BackendDB *  static BackendDB *
 relay_back_select_backend( struct slap_op *op, struct slap_rep *rs, int err )  relay_back_select_backend( struct slap_op *op, struct slap_rep *rs, int err )
 {  {
Line 95  relay_back_op_bind( struct slap_op *op, Line 105  relay_back_op_bind( struct slap_op *op,
   
         if ( bd->be_bind ) {          if ( bd->be_bind ) {
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                   slap_callback   cb;
   
                   relay_back_add_cb( &cb, op );
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_bind )( op, rs );                  rc = ( bd->be_bind )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
   
         } else {          } else {
                 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 "operation not supported "                                  "operation not supported "
Line 125  relay_back_op_unbind( struct slap_op *op Line 140  relay_back_op_unbind( struct slap_op *op
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_unbind )( op, rs );                  rc = ( bd->be_unbind )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
         }          }
   
         return 0;          return 0;
Line 155  relay_back_op_search( struct slap_op *op Line 168  relay_back_op_search( struct slap_op *op
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_search )( op, rs );                  rc = ( bd->be_search )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
   
         } else {          } else {
                 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 "operation not supported "                                  "operation not supported "
Line 190  relay_back_op_compare( struct slap_op *o Line 201  relay_back_op_compare( struct slap_op *o
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_compare )( op, rs );                  rc = ( bd->be_compare )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
   
         } else {          } else {
                 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 "operation not supported "                                  "operation not supported "
Line 225  relay_back_op_modify( struct slap_op *op Line 234  relay_back_op_modify( struct slap_op *op
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_modify )( op, rs );                  rc = ( bd->be_modify )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
   
         } else {          } else {
                 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 "operation not supported "                                  "operation not supported "
Line 260  relay_back_op_modrdn( struct slap_op *op Line 267  relay_back_op_modrdn( struct slap_op *op
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_modrdn )( op, rs );                  rc = ( bd->be_modrdn )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
   
         } else {          } else {
                 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 "operation not supported "                                  "operation not supported "
Line 295  relay_back_op_add( struct slap_op *op, s Line 300  relay_back_op_add( struct slap_op *op, s
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_add )( op, rs );                  rc = ( bd->be_add )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
   
         } else {          } else {
                 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 "operation not supported "                                  "operation not supported "
Line 330  relay_back_op_delete( struct slap_op *op Line 333  relay_back_op_delete( struct slap_op *op
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_delete )( op, rs );                  rc = ( bd->be_delete )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
         }          }
   
         return rc;          return rc;
Line 360  relay_back_op_abandon( struct slap_op *o Line 361  relay_back_op_abandon( struct slap_op *o
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_abandon )( op, rs );                  rc = ( bd->be_abandon )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
   
         } else {          } else {
                 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 "operation not supported "                                  "operation not supported "
Line 395  relay_back_op_cancel( struct slap_op *op Line 394  relay_back_op_cancel( struct slap_op *op
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_cancel )( op, rs );                  rc = ( bd->be_cancel )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
   
         } else {          } else {
                 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 "operation not supported "                                  "operation not supported "
Line 430  relay_back_op_extended( struct slap_op * Line 427  relay_back_op_extended( struct slap_op *
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_extended )( op, rs );                  rc = ( bd->be_extended )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
   
         } else {          } else {
                 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,                  send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
                                 "operation not supported "                                  "operation not supported "
Line 520  relay_back_chk_referrals( struct slap_op Line 515  relay_back_chk_referrals( struct slap_op
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                 slap_callback   cb;                  slap_callback   cb;
   
                 cb.sc_next = op->o_callback;                  relay_back_add_cb( &cb, op );
                 cb.sc_response = relay_back_swap_bd;  
                 cb.sc_cleanup = relay_back_swap_bd;  
                 cb.sc_private = op->o_bd;  
                 op->o_callback = &cb;  
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_chk_referrals )( op, rs );                  rc = ( bd->be_chk_referrals )( op, rs );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
         }          }
   
         return rc;          return rc;
Line 553  relay_back_operational( struct slap_op * Line 546  relay_back_operational( struct slap_op *
   
         if ( bd->be_operational ) {          if ( bd->be_operational ) {
                 BackendDB       *be = op->o_bd;                  BackendDB       *be = op->o_bd;
                   slap_callback   cb;
   
                   relay_back_add_cb( &cb, op );
   
                 op->o_bd = bd;                  op->o_bd = bd;
                 rc = ( bd->be_operational )( op, rs, opattrs, ap );                  rc = ( bd->be_operational )( op, rs, opattrs, ap );
                 op->o_bd = be;                  op->o_bd = be;
   
                   op->o_callback = op->o_callback->sc_next;
         }          }
   
         return rc;          return rc;

Removed from v.1.5  
changed lines
  Added in v.1.6


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org