Diff for /servers/slapd/overlays/syncprov.c between versions 1.45 and 1.46

version 1.45, 2004/12/07 23:47:25 version 1.46, 2004/12/08 01:05:50
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.44 2004/12/07 17:52:55 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.45 2004/12/07 23:47: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 1144  syncprov_playlog( Operation *op, SlapRep Line 1144  syncprov_playlog( Operation *op, SlapRep
         int i, j, ndel, num, nmods, mmods;          int i, j, ndel, num, nmods, mmods;
         BerVarray uuids;          BerVarray uuids;
   
           if ( !sl->sl_num ) {
                   ldap_pvt_thread_mutex_unlock( &sl->sl_mutex );
                   return;
           }
   
         num = sl->sl_num;          num = sl->sl_num;
         i = 0;          i = 0;
         nmods = 0;          nmods = 0;
Line 1211  syncprov_playlog( Operation *op, SlapRep Line 1216  syncprov_playlog( Operation *op, SlapRep
                 fop.o_sync_mode = 0;                  fop.o_sync_mode = 0;
                 fop.o_callback = &cb;                  fop.o_callback = &cb;
                 fop.ors_limit = NULL;                  fop.ors_limit = NULL;
                 fop.ors_slimit = 1;  
                 fop.ors_tlimit = SLAP_NO_LIMIT;                  fop.ors_tlimit = SLAP_NO_LIMIT;
                 fop.ors_attrs = slap_anlist_all_attributes;                  fop.ors_attrs = slap_anlist_all_attributes;
                 fop.ors_attrsonly = 0;                  fop.ors_attrsonly = 0;
Line 1228  syncprov_playlog( Operation *op, SlapRep Line 1232  syncprov_playlog( Operation *op, SlapRep
                 fop.ors_filter = &af;                  fop.ors_filter = &af;
   
                 cb.sc_response = playlog_cb;                  cb.sc_response = playlog_cb;
                   fop.o_bd->bd_info = on->on_info->oi_orig;
   
                 for ( i=0; i<nmods; i++ ) {                  for ( i=ndel; i<num; i++ ) {
                         if ( uuids[num - 1 - 1].bv_len == 0 ) continue;                          if ( uuids[i].bv_len == 0 ) continue;
   
                         mf.f_av_value = uuids[num -1 -i];                          mf.f_av_value = uuids[i];
                         filter2bv_x( &fop, fop.ors_filter, &fop.ors_filterstr );  
                         fop.o_bd->bd_info = on->on_info->oi_orig;  
                         cb.sc_private = NULL;                          cb.sc_private = NULL;
                           fop.ors_slimit = 1;
                         rc = fop.o_bd->be_search( &fop, &frs );                          rc = fop.o_bd->be_search( &fop, &frs );
                         fop.o_bd->bd_info = (BackendInfo *)on;  
                         op->o_tmpfree( fop.ors_filterstr.bv_val, op->o_tmpmemctx );  
   
                         /* If entry was not found, add to delete list */                          /* If entry was not found, add to delete list */
                         if ( !cb.sc_private ) {                          if ( !cb.sc_private ) {
                                 uuids[ndel++] = uuids[num - 1 - i];                                  uuids[ndel++] = uuids[i];
                         }                          }
                 }                  }
                   fop.o_bd->bd_info = (BackendInfo *)on;
         }          }
         if ( ndel ) {          if ( ndel ) {
                 uuids[ndel].bv_val = NULL;                  uuids[ndel].bv_val = NULL;

Removed from v.1.45  
changed lines
  Added in v.1.46


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