Diff for /servers/slapd/overlays/syncprov.c between versions 1.56.2.45 and 1.56.2.46

version 1.56.2.45, 2007/07/22 15:24:26 version 1.56.2.46, 2007/10/08 16:13:54
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.56.2.44 2007/07/12 00:36:36 hyc Exp $ */  /* $OpenLDAP$ */
 /* 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 1503  syncprov_op_response( Operation *op, Sla Line 1503  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 1548  syncprov_op_response( Operation *op, Sla Line 1548  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 1653  syncprov_op_mod( Operation *op, SlapRepl Line 1656  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 1669  syncprov_op_mod( Operation *op, SlapRepl Line 1679  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 1716  syncprov_op_mod( Operation *op, SlapRepl Line 1726  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;
Line 1865  syncprov_search_response( Operation *op, Line 1875  syncprov_search_response( Operation *op,
                         a = attr_find( rs->sr_operational_attrs, slap_schema.si_ad_entryCSN );                          a = attr_find( rs->sr_operational_attrs, slap_schema.si_ad_entryCSN );
                 }                  }
                 if ( a ) {                  if ( a ) {
                           /* If not a persistent search */
                         /* Make sure entry is less than the snapshot'd contextCSN */                          /* Make sure entry is less than the snapshot'd contextCSN */
                         if ( ber_bvcmp( &a->a_nvals[0], &ss->ss_ctxcsn ) > 0 ) {                          if ( !ss->ss_so && ber_bvcmp( &a->a_nvals[0], &ss->ss_ctxcsn ) > 0 ) {
                                 Debug( LDAP_DEBUG_SYNC, "Entry %s CSN %s greater than snapshot %s\n",                                  Debug( LDAP_DEBUG_SYNC, "Entry %s CSN %s greater than snapshot %s\n",
                                         rs->sr_entry->e_name.bv_val,                                          rs->sr_entry->e_name.bv_val,
                                         a->a_nvals[0].bv_val,                                          a->a_nvals[0].bv_val,

Removed from v.1.56.2.45  
changed lines
  Added in v.1.56.2.46


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