Diff for /servers/slapd/overlays/syncprov.c between versions 1.147.2.77 and 1.315

version 1.147.2.77, 2010/12/12 03:54:10 version 1.315, 2010/07/28 00:21:27
Line 1 Line 1
 /* $OpenLDAP$ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.314 2010/07/01 09:51:43 ralf 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 783  syncprov_free_syncop( syncops *so ) Line 783  syncprov_free_syncop( syncops *so )
         GroupAssertion *ga, *gnext;          GroupAssertion *ga, *gnext;
   
         ldap_pvt_thread_mutex_lock( &so->s_mutex );          ldap_pvt_thread_mutex_lock( &so->s_mutex );
         if ( --so->s_inuse > 0 ) {          /* already being freed, or still in use */
           if ( !so->s_inuse || --so->s_inuse > 0 ) {
                 ldap_pvt_thread_mutex_unlock( &so->s_mutex );                  ldap_pvt_thread_mutex_unlock( &so->s_mutex );
                 return;                  return;
         }          }
Line 1293  syncprov_matchops( Operation *op, opcook Line 1294  syncprov_matchops( Operation *op, opcook
                 }                  }
   
                 if ( fc.fscope ) {                  if ( fc.fscope ) {
                         ldap_pvt_thread_mutex_lock( &ss->s_mutex );  
                         op2 = *ss->s_op;                          op2 = *ss->s_op;
                         oh = *op->o_hdr;                          oh = *op->o_hdr;
                         oh.oh_conn = ss->s_op->o_conn;                          oh.oh_conn = ss->s_op->o_conn;
Line 1302  syncprov_matchops( Operation *op, opcook Line 1302  syncprov_matchops( Operation *op, opcook
                         op2.o_hdr = &oh;                          op2.o_hdr = &oh;
                         op2.o_extra = op->o_extra;                          op2.o_extra = op->o_extra;
                         op2.o_callback = NULL;                          op2.o_callback = NULL;
                           ldap_pvt_thread_mutex_lock( &ss->s_mutex );
                         if (ss->s_flags & PS_FIX_FILTER) {                          if (ss->s_flags & PS_FIX_FILTER) {
                                 /* Skip the AND/GE clause that we stuck on in front. We                                  /* Skip the AND/GE clause that we stuck on in front. We
                                    would lose deletes/mods that happen during the refresh                                     would lose deletes/mods that happen during the refresh
Line 2606  shortcut: Line 2607  shortcut:
 #endif  #endif
                 ber_dupbv_x( &fava->f_ava->aa_value, &mincsn, op->o_tmpmemctx );                  ber_dupbv_x( &fava->f_ava->aa_value, &mincsn, op->o_tmpmemctx );
                 fava->f_next = op->ors_filter;                  fava->f_next = op->ors_filter;
                 if ( sop )  
                         ldap_pvt_thread_mutex_lock( &sop->s_mutex );  
                 op->ors_filter = fand;                  op->ors_filter = fand;
                 filter2bv_x( op, op->ors_filter, &op->ors_filterstr );                  filter2bv_x( op, op->ors_filter, &op->ors_filterstr );
                 if ( sop ) {                  if ( sop )
                         sop->s_flags |= PS_FIX_FILTER;                          sop->s_flags |= PS_FIX_FILTER;
                         ldap_pvt_thread_mutex_unlock( &sop->s_mutex );  
                 }  
         }          }
   
         /* Let our callback add needed info to returned entries */          /* Let our callback add needed info to returned entries */
Line 3019  syncprov_db_close( Line 3016  syncprov_db_close(
 {  {
     slap_overinst   *on = (slap_overinst *) be->bd_info;      slap_overinst   *on = (slap_overinst *) be->bd_info;
     syncprov_info_t *si = (syncprov_info_t *)on->on_bi.bi_private;      syncprov_info_t *si = (syncprov_info_t *)on->on_bi.bi_private;
   #ifdef SLAP_CONFIG_DELETE
           syncops *so, *sonext;
   #endif /* SLAP_CONFIG_DELETE */
   
         if ( slapMode & SLAP_TOOL_MODE ) {          if ( slapMode & SLAP_TOOL_MODE ) {
                 return 0;                  return 0;
Line 3039  syncprov_db_close( Line 3039  syncprov_db_close(
                 syncprov_checkpoint( op, &rs, on );                  syncprov_checkpoint( op, &rs, on );
         }          }
   
   #ifdef SLAP_CONFIG_DELETE
           ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
           for ( so=si->si_ops, sonext=so;  so; so=sonext  ) {
                   SlapReply rs = {REP_RESULT};
                   rs.sr_err = LDAP_UNAVAILABLE;
                   send_ldap_result( so->s_op, &rs );
                   sonext=so->s_next;
                   syncprov_drop_psearch( so, 0);
           }
           si->si_ops=NULL;
           ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
           overlay_unregister_control( be, LDAP_CONTROL_SYNC );
   #endif /* SLAP_CONFIG_DELETE */
   
     return 0;      return 0;
 }  }
   

Removed from v.1.147.2.77  
changed lines
  Added in v.1.315


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