Diff for /servers/slapd/overlays/syncprov.c between versions 1.307 and 1.311

version 1.307, 2009/11/23 21:17:25 version 1.311, 2010/04/29 13:47:27
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.306 2009/11/23 21:13:42 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.310 2010/04/13 20:18:25 kurt 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/>.
  *   *
  * Copyright 2004-2009 The OpenLDAP Foundation.   * Copyright 2004-2010 The OpenLDAP Foundation.
  * All rights reserved.   * All rights reserved.
  *   *
  * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
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 931  syncprov_qplay( Operation *op, syncops * Line 932  syncprov_qplay( Operation *op, syncops *
                 ldap_pvt_thread_mutex_unlock( &so->s_mutex );                  ldap_pvt_thread_mutex_unlock( &so->s_mutex );
   
                 if ( sr->s_mode == LDAP_SYNC_NEW_COOKIE ) {                  if ( sr->s_mode == LDAP_SYNC_NEW_COOKIE ) {
                     SlapReply rs = { REP_INTERMEDIATE };                          SlapReply rs = { REP_INTERMEDIATE };
   
                     rc = syncprov_sendinfo( op, &rs, LDAP_TAG_SYNC_NEW_COOKIE,                          rc = syncprov_sendinfo( op, &rs, LDAP_TAG_SYNC_NEW_COOKIE,
                                 &sr->s_csn, 0, NULL, 0 );                                  &sr->s_csn, 0, NULL, 0 );
                 } else {                  } else {
                         opc.sdn = sr->s_dn;                          opc.sdn = sr->s_dn;
Line 945  syncprov_qplay( Operation *op, syncops * Line 946  syncprov_qplay( Operation *op, syncops *
   
                         rc = syncprov_sendresp( op, &opc, so, sr->s_mode );                          rc = syncprov_sendresp( op, &opc, so, sr->s_mode );
   
                         if ( opc.se ) {                  }
                                 if ( !dec_mutexint( opc.se->e_private )) {                  if ( sr->s_e ) {
                                         opc.se->e_private = NULL;                          if ( !dec_mutexint( sr->s_e->e_private )) {
                                         entry_free ( opc.se );                                  sr->s_e->e_private = NULL;
                                 }                                  entry_free ( sr->s_e );
                         }                          }
                 }                  }
   
Line 1413  syncprov_checkpoint( Operation *op, Slap Line 1414  syncprov_checkpoint( Operation *op, Slap
         SlapReply rsm = { 0 };          SlapReply rsm = { 0 };
         slap_callback cb = {0};          slap_callback cb = {0};
         BackendDB be;          BackendDB be;
           BackendInfo *bi;
   
 #ifdef CHECK_CSN  #ifdef CHECK_CSN
         Syntax *syn = slap_schema.si_ad_contextCSN->ad_type->sat_syntax;          Syntax *syn = slap_schema.si_ad_contextCSN->ad_type->sat_syntax;
Line 1442  syncprov_checkpoint( Operation *op, Slap Line 1444  syncprov_checkpoint( Operation *op, Slap
         }          }
         opm.o_req_dn = si->si_contextdn;          opm.o_req_dn = si->si_contextdn;
         opm.o_req_ndn = si->si_contextdn;          opm.o_req_ndn = si->si_contextdn;
           bi = opm.o_bd->bd_info;
         opm.o_bd->bd_info = on->on_info->oi_orig;          opm.o_bd->bd_info = on->on_info->oi_orig;
         opm.o_managedsait = SLAP_CONTROL_NONCRITICAL;          opm.o_managedsait = SLAP_CONTROL_NONCRITICAL;
         opm.o_no_schema_check = 1;          opm.o_no_schema_check = 1;
Line 1459  syncprov_checkpoint( Operation *op, Slap Line 1462  syncprov_checkpoint( Operation *op, Slap
                 if ( e == opm.ora_e )                  if ( e == opm.ora_e )
                         be_entry_release_w( &opm, opm.ora_e );                          be_entry_release_w( &opm, opm.ora_e );
         }          }
           opm.o_bd->bd_info = bi;
   
         if ( mod.sml_next != NULL ) {          if ( mod.sml_next != NULL ) {
                 slap_mods_free( mod.sml_next, 1 );                  slap_mods_free( mod.sml_next, 1 );

Removed from v.1.307  
changed lines
  Added in v.1.311


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