Diff for /servers/slapd/overlays/syncprov.c between versions 1.249 and 1.250

version 1.249, 2008/10/28 19:33:46 version 1.250, 2008/11/02 14:26:25
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.248 2008/10/17 15:40:49 hallvard Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.249 2008/10/28 19:33:46 rein 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 1604  syncprov_op_response( Operation *op, Sla Line 1604  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, have_psearches;                  int do_check = 0, have_psearches, foundit;
   
                 /* Update our context CSN */                  /* Update our context CSN */
                 cbuf[0] = '\0';                  cbuf[0] = '\0';
                 ldap_pvt_thread_rdwr_wlock( &si->si_csn_rwlock );                  ldap_pvt_thread_rdwr_wlock( &si->si_csn_rwlock );
                 slap_get_commit_csn( op, &maxcsn );                  slap_get_commit_csn( op, &maxcsn, &foundit );
                 if ( BER_BVISNULL( &maxcsn ) && SLAP_GLUE_SUBORDINATE( op->o_bd )) {                  if ( BER_BVISNULL( &maxcsn ) && SLAP_GLUE_SUBORDINATE( op->o_bd )) {
                         /* syncrepl queues the CSN values in the db where                          /* syncrepl queues the CSN values in the db where
                          * it is configured , not where the changes are made.                           * it is configured , not where the changes are made.
Line 1618  syncprov_op_response( Operation *op, Sla Line 1618  syncprov_op_response( Operation *op, Sla
                          */                           */
                         BackendDB *be = op->o_bd;                          BackendDB *be = op->o_bd;
                         op->o_bd = select_backend( &be->be_nsuffix[0], 1);                          op->o_bd = select_backend( &be->be_nsuffix[0], 1);
                         slap_get_commit_csn( op, &maxcsn );                          slap_get_commit_csn( op, &maxcsn, &foundit );
                         op->o_bd = be;                          op->o_bd = be;
                 }                  }
                 if ( !BER_BVISNULL( &maxcsn ) ) {                  if ( !BER_BVISNULL( &maxcsn ) ) {
Line 1641  syncprov_op_response( Operation *op, Sla Line 1641  syncprov_op_response( Operation *op, Sla
                                         sizeof(int));                                          sizeof(int));
                                 si->si_sids[i] = sid;                                  si->si_sids[i] = sid;
                         }                          }
                 } else {                  } else if ( !foundit ) {
                         /* internal ops that aren't meant to be replicated */                          /* internal ops that aren't meant to be replicated */
                         ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock );                          ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock );
                         return SLAP_CB_CONTINUE;                          return SLAP_CB_CONTINUE;
Line 1678  syncprov_op_response( Operation *op, Sla Line 1678  syncprov_op_response( Operation *op, Sla
                         ldap_pvt_thread_rdwr_runlock( &si->si_csn_rwlock );                          ldap_pvt_thread_rdwr_runlock( &si->si_csn_rwlock );
                 }                  }
   
                 opc->sctxcsn.bv_len = maxcsn.bv_len;                  /* only update consumer ctx if this is the greatest csn */
                 opc->sctxcsn.bv_val = cbuf;                  if ( bvmatch( &maxcsn, &op->o_csn )) {
                           opc->sctxcsn.bv_len = maxcsn.bv_len;
                           opc->sctxcsn.bv_val = cbuf;
                   }
   
                 /* Handle any persistent searches */                  /* Handle any persistent searches */
                 ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );                  ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );

Removed from v.1.249  
changed lines
  Added in v.1.250


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