Diff for /servers/slapd/overlays/syncprov.c between versions 1.204 and 1.205

version 1.204, 2007/10/08 11:28:25 version 1.205, 2007/10/08 11:59:33
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.203 2007/10/02 21:51:40 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.204 2007/10/08 11:28:25 hyc Exp $ */
 /* syncprov.c - syncrepl provider */  /* syncprov.c - syncrepl provider */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
Line 1564  syncprov_op_response( Operation *op, Sla Line 1564  syncprov_op_response( Operation *op, Sla
         {          {
                 struct berval maxcsn = BER_BVNULL;                  struct berval maxcsn = BER_BVNULL;
                 char cbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];                  char cbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];
                 int do_check = 0;                  int do_check = 0, have_psearches;
   
                 /* Update our context CSN */                  /* Update our context CSN */
                 cbuf[0] = '\0';                  cbuf[0] = '\0';
Line 1623  syncprov_op_response( Operation *op, Sla Line 1623  syncprov_op_response( Operation *op, Sla
                 opc->sctxcsn.bv_val = cbuf;                  opc->sctxcsn.bv_val = cbuf;
   
                 /* Handle any persistent searches */                  /* Handle any persistent searches */
                 if ( si->si_ops ) {                  ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
                   have_psearches = ( si->si_ops != NULL );
                   ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
                   if ( have_psearches ) {
                         switch(op->o_tag) {                          switch(op->o_tag) {
                         case LDAP_REQ_ADD:                          case LDAP_REQ_ADD:
                         case LDAP_REQ_MODIFY:                          case LDAP_REQ_MODIFY:
Line 1726  syncprov_op_mod( Operation *op, SlapRepl Line 1729  syncprov_op_mod( Operation *op, SlapRepl
 {  {
         slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;          slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;
         syncprov_info_t         *si = on->on_bi.bi_private;          syncprov_info_t         *si = on->on_bi.bi_private;
           slap_callback *cb;
           opcookie *opc;
           int have_psearches, cbsize;
   
         slap_callback *cb = op->o_tmpcalloc(1, sizeof(slap_callback)+          ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
                 sizeof(opcookie) +          have_psearches = ( si->si_ops != NULL );
                 (si->si_ops ? sizeof(modinst) : 0 ),          ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
                 op->o_tmpmemctx);  
         opcookie *opc = (opcookie *)(cb+1);          cbsize = sizeof(slap_callback) + sizeof(opcookie) +
                   (have_psearches ? sizeof(modinst) : 0 );
   
           cb = op->o_tmpcalloc(1, cbsize, op->o_tmpmemctx);
           opc = (opcookie *)(cb+1);
         opc->son = on;          opc->son = on;
         cb->sc_response = syncprov_op_response;          cb->sc_response = syncprov_op_response;
         cb->sc_cleanup = syncprov_op_cleanup;          cb->sc_cleanup = syncprov_op_cleanup;
Line 1742  syncprov_op_mod( Operation *op, SlapRepl Line 1752  syncprov_op_mod( Operation *op, SlapRepl
         /* If there are active persistent searches, lock this operation.          /* If there are active persistent searches, lock this operation.
          * See seqmod.c for the locking logic on its own.           * See seqmod.c for the locking logic on its own.
          */           */
         if ( si->si_ops ) {          if ( have_psearches ) {
                 modtarget *mt, mtdummy;                  modtarget *mt, mtdummy;
                 modinst *mi;                  modinst *mi;
   
Line 1789  syncprov_op_mod( Operation *op, SlapRepl Line 1799  syncprov_op_mod( Operation *op, SlapRepl
                 }                  }
         }          }
   
         if (( si->si_ops || si->si_logs ) && op->o_tag != LDAP_REQ_ADD )          if (( have_psearches || si->si_logs ) && op->o_tag != LDAP_REQ_ADD )
                 syncprov_matchops( op, opc, 1 );                  syncprov_matchops( op, opc, 1 );
   
         return SLAP_CB_CONTINUE;          return SLAP_CB_CONTINUE;

Removed from v.1.204  
changed lines
  Added in v.1.205


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