Diff for /servers/slapd/overlays/syncprov.c between versions 1.175 and 1.176

version 1.175, 2007/02/06 00:18:17 version 1.176, 2007/02/06 03:19:56
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.174 2007/02/05 22:54:07 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.175 2007/02/06 00:18:17 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 404  syncprov_findbase( Operation *op, fbase_ Line 404  syncprov_findbase( Operation *op, fbase_
                 slap_callback cb = {0};                  slap_callback cb = {0};
                 Operation fop;                  Operation fop;
                 SlapReply frs = { REP_RESULT };                  SlapReply frs = { REP_RESULT };
                   BackendInfo *bi;
                 int rc;                  int rc;
   
                 fc->fss->s_flags ^= PS_FIND_BASE;                  fc->fss->s_flags ^= PS_FIND_BASE;
Line 415  syncprov_findbase( Operation *op, fbase_ Line 416  syncprov_findbase( Operation *op, fbase_
                 fop.o_bd = op->o_bd;                  fop.o_bd = op->o_bd;
                 fop.o_time = op->o_time;                  fop.o_time = op->o_time;
                 fop.o_tincr = op->o_tincr;                  fop.o_tincr = op->o_tincr;
                   bi = op->o_bd->bd_info;
   
                 cb.sc_response = findbase_cb;                  cb.sc_response = findbase_cb;
                 cb.sc_private = fc;                  cb.sc_private = fc;
Line 432  syncprov_findbase( Operation *op, fbase_ Line 434  syncprov_findbase( Operation *op, fbase_
                 fop.ors_filter = &generic_filter;                  fop.ors_filter = &generic_filter;
                 fop.ors_filterstr = generic_filterstr;                  fop.ors_filterstr = generic_filterstr;
   
                 fop.o_bd->bd_info = on->on_info->oi_orig;                  rc = overlay_op_walk( &fop, &frs, op_search, on->on_info, on );
                 rc = fop.o_bd->be_search( &fop, &frs );                  op->o_bd->bd_info = bi;
                 fop.o_bd->bd_info = (BackendInfo *)on;  
         } else {          } else {
                 ldap_pvt_thread_mutex_unlock( &fc->fss->s_mutex );                  ldap_pvt_thread_mutex_unlock( &fc->fss->s_mutex );
                 fc->fbase = 1;                  fc->fbase = 1;
Line 839  syncprov_qplay( Operation *op, slap_over Line 840  syncprov_qplay( Operation *op, slap_over
         int rc = 0;          int rc = 0;
   
         opc.son = on;          opc.son = on;
         op->o_bd->bd_info = (BackendInfo *)on->on_info;  
   
         for (;;) {          for (;;) {
                 ldap_pvt_thread_mutex_lock( &so->s_mutex );                  ldap_pvt_thread_mutex_lock( &so->s_mutex );
Line 861  syncprov_qplay( Operation *op, slap_over Line 861  syncprov_qplay( Operation *op, slap_over
                 e = NULL;                  e = NULL;
   
                 if ( sr->s_mode != LDAP_SYNC_DELETE ) {                  if ( sr->s_mode != LDAP_SYNC_DELETE ) {
                         rc = be_entry_get_rw( op, &opc.sndn, NULL, NULL, 0, &e );                          rc = overlay_entry_get_ov( op, &opc.sndn, NULL, NULL, 0, &e, on );
                         if ( rc ) {                          if ( rc ) {
                                 Debug( LDAP_DEBUG_SYNC, "syncprov_qplay: failed to get %s, "                                  Debug( LDAP_DEBUG_SYNC, "syncprov_qplay: failed to get %s, "
                                         "error (%d), ignoring...\n", opc.sndn.bv_val, rc, 0 );                                          "error (%d), ignoring...\n", opc.sndn.bv_val, rc, 0 );
Line 873  syncprov_qplay( Operation *op, slap_over Line 873  syncprov_qplay( Operation *op, slap_over
                 rc = syncprov_sendresp( op, &opc, so, &e, sr->s_mode );                  rc = syncprov_sendresp( op, &opc, so, &e, sr->s_mode );
   
                 if ( e ) {                  if ( e ) {
                         be_entry_release_rw( op, e, 0 );                          overlay_entry_release_ov( op, e, 0, on );
                 }                  }
   
                 ch_free( sr );                  ch_free( sr );
Line 881  syncprov_qplay( Operation *op, slap_over Line 881  syncprov_qplay( Operation *op, slap_over
                 if ( rc )                  if ( rc )
                         break;                          break;
         }          }
         op->o_bd->bd_info = (BackendInfo *)on;  
         return rc;          return rc;
 }  }
   
Line 1098  syncprov_matchops( Operation *op, opcook Line 1097  syncprov_matchops( Operation *op, opcook
   
         fbase_cookie fc;          fbase_cookie fc;
         syncops *ss, *sprev, *snext;          syncops *ss, *sprev, *snext;
         Entry *e;          Entry *e = NULL;
         Attribute *a;          Attribute *a;
         int rc;          int rc;
         struct berval newdn;          struct berval newdn;
Line 1120  syncprov_matchops( Operation *op, opcook Line 1119  syncprov_matchops( Operation *op, opcook
                         db = *op->o_bd;                          db = *op->o_bd;
                         op->o_bd = &db;                          op->o_bd = &db;
                 }                  }
                 op->o_bd->bd_info = (BackendInfo *)on->on_info;                  rc = overlay_entry_get_ov( op, fc.fdn, NULL, NULL, 0, &e, on );
                 rc = be_entry_get_rw( op, fc.fdn, NULL, NULL, 0, &e );  
                 /* If we're sending responses now, make a copy and unlock the DB */                  /* If we're sending responses now, make a copy and unlock the DB */
                 if ( e && !saveit ) {                  if ( e && !saveit ) {
                         Entry *e2 = entry_dup( e );                          Entry *e2 = entry_dup( e );
                         be_entry_release_rw( op, e, 0 );                          overlay_entry_release_ov( op, e, 0, on );
                         e = e2;                          e = e2;
                 }                  }
                 op->o_bd->bd_info = (BackendInfo *)on;  
                 if ( rc ) {                  if ( rc ) {
                         op->o_bd = b0;                          op->o_bd = b0;
                         return;                          return;
Line 2504  syncprov_db_open( Line 2501  syncprov_db_open(
         Connection conn = { 0 };          Connection conn = { 0 };
         OperationBuffer opbuf = { 0 };          OperationBuffer opbuf = { 0 };
         Operation *op = (Operation *) &opbuf;          Operation *op = (Operation *) &opbuf;
         Entry *e;          Entry *e = NULL;
         Attribute *a;          Attribute *a;
         int rc;          int rc;
         void *thrctx = NULL;          void *thrctx = NULL;
Line 2530  syncprov_db_open( Line 2527  syncprov_db_open(
         op->o_dn = be->be_rootdn;          op->o_dn = be->be_rootdn;
         op->o_ndn = be->be_rootndn;          op->o_ndn = be->be_rootndn;
   
         op->o_bd->bd_info = on->on_info->oi_orig;          rc = overlay_entry_get_ov( op, be->be_nsuffix, NULL,
         rc = be_entry_get_rw( op, be->be_nsuffix, NULL,                  slap_schema.si_ad_contextCSN, 0, &e, on );
                 slap_schema.si_ad_contextCSN, 0, &e );  
   
         if ( e ) {          if ( e ) {
                 ldap_pvt_thread_t tid;                  ldap_pvt_thread_t tid;
Line 2545  syncprov_db_open( Line 2541  syncprov_db_open(
                         si->si_numcsns = i;                          si->si_numcsns = i;
                         si->si_sids = slap_parse_csn_sids( si->si_ctxcsn, i );                          si->si_sids = slap_parse_csn_sids( si->si_ctxcsn, i );
                 }                  }
                 be_entry_release_rw( op, e, 0 );                  overlay_entry_release_ov( op, e, 0, on );
                 if ( si->si_ctxcsn ) {                  if ( si->si_ctxcsn ) {
                         op->o_bd->bd_info = (BackendInfo *)on;  
                         op->o_req_dn = be->be_suffix[0];                          op->o_req_dn = be->be_suffix[0];
                         op->o_req_ndn = be->be_nsuffix[0];                          op->o_req_ndn = be->be_nsuffix[0];
                         op->ors_scope = LDAP_SCOPE_SUBTREE;                          op->ors_scope = LDAP_SCOPE_SUBTREE;

Removed from v.1.175  
changed lines
  Added in v.1.176


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