Diff for /servers/slapd/overlays/syncprov.c between versions 1.147.2.66 and 1.293

version 1.147.2.66, 2009/11/21 03:23:33 version 1.293, 2009/11/11 03:03:27
Line 1 Line 1
 /* $OpenLDAP$ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.292 2009/11/11 02:36:46 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 584  syncprov_findcsn( Operation *op, find_cs Line 584  syncprov_findcsn( Operation *op, find_cs
         slap_callback cb = {0};          slap_callback cb = {0};
         Operation fop;          Operation fop;
         SlapReply frs = { REP_RESULT };          SlapReply frs = { REP_RESULT };
         char buf[LDAP_LUTIL_CSNSTR_BUFSIZE + STRLENOF("(entryCSN<=)")];          char buf[LDAP_PVT_CSNSTR_BUFSIZE + STRLENOF("(entryCSN<=)")];
         char cbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];          char cbuf[LDAP_PVT_CSNSTR_BUFSIZE];
         struct berval maxcsn;          struct berval maxcsn;
         Filter cf;          Filter cf;
         AttributeAssertion eq = ATTRIBUTEASSERTION_INIT;          AttributeAssertion eq = ATTRIBUTEASSERTION_INIT;
Line 792  syncprov_sendresp( Operation *op, opcook Line 792  syncprov_sendresp( Operation *op, opcook
         }          }
   
 #ifdef LDAP_DEBUG  #ifdef LDAP_DEBUG
         if ( so->s_sid > 0 ) {          if ( !BER_BVISNULL( &cookie )) {
                 Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: to=%03x, cookie=%s\n",                  if ( so->s_sid > 0 ) {
                         so->s_sid, cookie.bv_val ? cookie.bv_val : "", 0 );                          Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: to=%03x, cookie=%s\n",
         } else {                                  so->s_sid, cookie.bv_val , 0 );
                 Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: cookie=%s\n",                  } else {
                         cookie.bv_val ? cookie.bv_val : "", 0, 0 );                          Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: cookie=%s\n",
         }                                  cookie.bv_val, 0, 0 );
                   }
           }               
 #endif  #endif
   
         e_uuid.e_attrs = &a_uuid;          e_uuid.e_attrs = &a_uuid;
Line 853  syncprov_sendresp( Operation *op, opcook Line 855  syncprov_sendresp( Operation *op, opcook
         }          }
         /* In case someone else freed it already? */          /* In case someone else freed it already? */
         if ( rs.sr_ctrls ) {          if ( rs.sr_ctrls ) {
                 int i;                  op->o_tmpfree( rs.sr_ctrls[0], op->o_tmpmemctx );
                 for ( i=0; rs.sr_ctrls[i]; i++ ) {  
                         if ( rs.sr_ctrls[i] == ctrls[0] ) {  
                                 op->o_tmpfree( ctrls[0]->ldctl_value.bv_val, op->o_tmpmemctx );  
                                 ctrls[0]->ldctl_value.bv_val = NULL;  
                                 break;  
                         }  
                 }  
                 rs.sr_ctrls = NULL;                  rs.sr_ctrls = NULL;
         }          }
   
Line 1196  syncprov_matchops( Operation *op, opcook Line 1191  syncprov_matchops( Operation *op, opcook
                 if ( ss->s_op->o_abandon )                  if ( ss->s_op->o_abandon )
                         continue;                          continue;
   
                 /* Don't send ops back to the originator */                  /* First time thru, check for possible skips */
                 if ( opc->osid > 0 && opc->osid == ss->s_sid ) {                  if ( saveit || op->o_tag == LDAP_REQ_ADD ) {
                         Debug( LDAP_DEBUG_SYNC, "syncprov_matchops: skipping original sid %03x\n",  
                                 opc->osid, 0, 0 );  
                         continue;  
                 }  
   
                 /* Don't send ops back to the messenger */                          /* Don't send ops back to the originator */
                 if ( opc->rsid > 0 && opc->rsid == ss->s_sid ) {                          if ( opc->osid > 0 && opc->osid == ss->s_sid ) {
                         Debug( LDAP_DEBUG_SYNC, "syncprov_matchops: skipping relayed sid %03x\n",                                  Debug( LDAP_DEBUG_SYNC, "syncprov_matchops: skipping original sid %03x\n",
                                 opc->rsid, 0, 0 );                                          opc->osid, 0, 0 );
                         continue;                                  continue;
                           }
   
                           /* Don't send ops back to the messenger */
                           if ( opc->rsid > 0 && opc->rsid == ss->s_sid ) {
                                   Debug( LDAP_DEBUG_SYNC, "syncprov_matchops: skipping relayed sid %03x\n",
                                           opc->rsid, 0, 0 );
                                   continue;
                           }
                 }                  }
   
                 /* validate base */                  /* validate base */
Line 1363  syncprov_checkpoint( Operation *op, Slap Line 1362  syncprov_checkpoint( Operation *op, Slap
         SlapReply rsm = { 0 };          SlapReply rsm = { 0 };
         slap_callback cb = {0};          slap_callback cb = {0};
         BackendDB be;          BackendDB be;
           struct berval ctxdn;
   
 #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 1389  syncprov_checkpoint( Operation *op, Slap Line 1389  syncprov_checkpoint( Operation *op, Slap
         if ( SLAP_GLUE_SUBORDINATE( op->o_bd )) {          if ( SLAP_GLUE_SUBORDINATE( op->o_bd )) {
                 be = *on->on_info->oi_origdb;                  be = *on->on_info->oi_origdb;
                 opm.o_bd = &be;                  opm.o_bd = &be;
                   ctxdn = be.be_nsuffix[0];
           } else {
                   ctxdn = si->si_contextdn;
         }          }
         opm.o_req_dn = si->si_contextdn;          opm.o_req_dn = ctxdn;
         opm.o_req_ndn = si->si_contextdn;          opm.o_req_ndn = ctxdn;
         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 1485  syncprov_playlog( Operation *op, SlapRep Line 1488  syncprov_playlog( Operation *op, SlapRep
         slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;          slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;
         slog_entry *se;          slog_entry *se;
         int i, j, ndel, num, nmods, mmods;          int i, j, ndel, num, nmods, mmods;
         char cbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];          char cbuf[LDAP_PVT_CSNSTR_BUFSIZE];
         BerVarray uuids;          BerVarray uuids;
         struct berval delcsn[2];          struct berval delcsn[2];
   
Line 1660  syncprov_op_response( Operation *op, Sla Line 1663  syncprov_op_response( Operation *op, Sla
         if ( rs->sr_err == LDAP_SUCCESS )          if ( rs->sr_err == LDAP_SUCCESS )
         {          {
                 struct berval maxcsn;                  struct berval maxcsn;
                 char cbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];                  char cbuf[LDAP_PVT_CSNSTR_BUFSIZE];
                 int do_check = 0, have_psearches, foundit, csn_changed = 0;                  int do_check = 0, have_psearches, foundit, csn_changed = 0;
   
                 ldap_pvt_thread_mutex_lock( &si->si_resp_mutex );                  ldap_pvt_thread_mutex_lock( &si->si_resp_mutex );
Line 2817  sp_cf_gen(ConfigArgs *c) Line 2820  sp_cf_gen(ConfigArgs *c)
                 }                  }
                 sl = si->si_logs;                  sl = si->si_logs;
                 if ( !sl ) {                  if ( !sl ) {
                         sl = ch_malloc( sizeof( sessionlog ) + LDAP_LUTIL_CSNSTR_BUFSIZE );                          sl = ch_malloc( sizeof( sessionlog ) + LDAP_PVT_CSNSTR_BUFSIZE );
                         sl->sl_mincsn.bv_val = (char *)(sl+1);                          sl->sl_mincsn.bv_val = (char *)(sl+1);
                         sl->sl_mincsn.bv_len = 0;                          sl->sl_mincsn.bv_len = 0;
                         sl->sl_num = 0;                          sl->sl_num = 0;
Line 2887  syncprov_db_open( Line 2890  syncprov_db_open(
         }          }
   
         thrctx = ldap_pvt_thread_pool_context();          thrctx = ldap_pvt_thread_pool_context();
         connection_fake_init2( &conn, &opbuf, thrctx, 0 );          connection_fake_init( &conn, &opbuf, thrctx );
         op = &opbuf.ob_op;          op = &opbuf.ob_op;
         op->o_bd = be;          op->o_bd = be;
         op->o_dn = be->be_rootdn;          op->o_dn = be->be_rootdn;
Line 2923  syncprov_db_open( Line 2926  syncprov_db_open(
   
         /* Didn't find a contextCSN, should we generate one? */          /* Didn't find a contextCSN, should we generate one? */
         if ( !si->si_ctxcsn ) {          if ( !si->si_ctxcsn ) {
                 char csnbuf[ LDAP_LUTIL_CSNSTR_BUFSIZE ];                  char csnbuf[ LDAP_PVT_CSNSTR_BUFSIZE ];
                 struct berval csn;                  struct berval csn;
   
                 if ( SLAP_SYNC_SHADOW( op->o_bd )) {                  if ( SLAP_SYNC_SHADOW( op->o_bd )) {
Line 2972  syncprov_db_close( Line 2975  syncprov_db_close(
                 void *thrctx;                  void *thrctx;
   
                 thrctx = ldap_pvt_thread_pool_context();                  thrctx = ldap_pvt_thread_pool_context();
                 connection_fake_init2( &conn, &opbuf, thrctx, 0 );                  connection_fake_init( &conn, &opbuf, thrctx );
                 op = &opbuf.ob_op;                  op = &opbuf.ob_op;
                 op->o_bd = be;                  op->o_bd = be;
                 op->o_dn = be->be_rootdn;                  op->o_dn = be->be_rootdn;

Removed from v.1.147.2.66  
changed lines
  Added in v.1.293


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