Diff for /servers/slapd/overlays/syncprov.c between versions 1.56.2.11 and 1.104

version 1.56.2.11, 2005/08/17 16:15:37 version 1.104, 2005/09/08 00:19:05
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.98 2005/08/15 05:18:19 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.103 2005/09/02 08:08:44 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 142  typedef struct fbase_cookie { Line 142  typedef struct fbase_cookie {
         int fscope;     /* if TRUE then fdn is within the psearch scope */          int fscope;     /* if TRUE then fdn is within the psearch scope */
 } fbase_cookie;  } fbase_cookie;
   
 static AttributeName csn_anlist[2];  static AttributeName csn_anlist[3];
 static AttributeName uuid_anlist[2];  static AttributeName uuid_anlist[2];
   
 /* Build a LDAPsync intermediate state control */  /* Build a LDAPsync intermediate state control */
Line 178  syncprov_state_ctrl( Line 178  syncprov_state_ctrl(
                 }                  }
         }          }
   
           /* FIXME: what if entryuuid is NULL or empty ? */
   
         if ( send_cookie && cookie ) {          if ( send_cookie && cookie ) {
                 ber_printf( ber, "{eOON}",                  ber_printf( ber, "{eOON}",
                         entry_sync_state, &entryuuid_bv, cookie );                          entry_sync_state, &entryuuid_bv, cookie );
Line 425  syncprov_findbase( Operation *op, fbase_ Line 427  syncprov_findbase( Operation *op, fbase_
         fop.ors_filter = fc->fss->s_op->ors_filter;          fop.ors_filter = fc->fss->s_op->ors_filter;
         fop.ors_filterstr = fc->fss->s_op->ors_filterstr;          fop.ors_filterstr = fc->fss->s_op->ors_filterstr;
   
           fop.o_req_dn = fc->fss->s_op->o_req_dn;
         fop.o_req_ndn = fc->fss->s_op->o_req_ndn;          fop.o_req_ndn = fc->fss->s_op->o_req_ndn;
           fop.o_authz = fc->fss->s_op->o_authz;
   
         fop.o_bd->bd_info = on->on_info->oi_orig;          fop.o_bd->bd_info = on->on_info->oi_orig;
         rc = fop.o_bd->be_search( &fop, &frs );          rc = fop.o_bd->be_search( &fop, &frs );
Line 1044  syncprov_matchops( Operation *op, opcook Line 1048  syncprov_matchops( Operation *op, opcook
                                 "search base has changed" );                                  "search base has changed" );
                         sprev->s_next = snext;                          sprev->s_next = snext;
                         syncprov_drop_psearch( ss, 1 );                          syncprov_drop_psearch( ss, 1 );
                           ss = sprev;
                         continue;                          continue;
                 }                  }
   
Line 2111  sp_cf_gen(ConfigArgs *c) Line 2116  sp_cf_gen(ConfigArgs *c)
         return rc;          return rc;
 }  }
   
 /* Cheating - we have no thread pool context for these functions,  
  * so make one.  
  */  
 typedef struct thread_keys {  
         void *key;  
         void *data;  
         ldap_pvt_thread_pool_keyfree_t *xfree;  
 } thread_keys;  
   
 #define MAXKEYS 32  
 /* A fake thread context */  
 static thread_keys thrctx[MAXKEYS];  
   
 /* ITS#3456 we cannot run this search on the main thread, must use a  /* ITS#3456 we cannot run this search on the main thread, must use a
  * child thread in order to insure we have a big enough stack.   * child thread in order to insure we have a big enough stack.
  */   */
Line 2155  syncprov_db_open( Line 2147  syncprov_db_open(
         Entry *e;          Entry *e;
         Attribute *a;          Attribute *a;
         int rc;          int rc;
           void *thrctx = NULL;
   
         if ( slapMode & SLAP_TOOL_MODE ) {          if ( slapMode & SLAP_TOOL_MODE ) {
                 return 0;                  return 0;
Line 2165  syncprov_db_open( Line 2158  syncprov_db_open(
                 return rc;                  return rc;
         }          }
   
           thrctx = ldap_pvt_thread_pool_context();
         connection_fake_init( &conn, op, thrctx );          connection_fake_init( &conn, op, thrctx );
         op->o_bd = be;          op->o_bd = be;
         op->o_dn = be->be_rootdn;          op->o_dn = be->be_rootdn;
Line 2218  syncprov_db_open( Line 2212  syncprov_db_open(
   
 out:  out:
         op->o_bd->bd_info = (BackendInfo *)on;          op->o_bd->bd_info = (BackendInfo *)on;
           ldap_pvt_thread_pool_context_reset( thrctx );
         return 0;          return 0;
 }  }
   
Line 2230  syncprov_db_close( Line 2225  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;
         int i;  
   
         if ( slapMode & SLAP_TOOL_MODE ) {          if ( slapMode & SLAP_TOOL_MODE ) {
                 return 0;                  return 0;
Line 2240  syncprov_db_close( Line 2234  syncprov_db_close(
                 char opbuf[OPERATION_BUFFER_SIZE];                  char opbuf[OPERATION_BUFFER_SIZE];
                 Operation *op = (Operation *)opbuf;                  Operation *op = (Operation *)opbuf;
                 SlapReply rs = {REP_RESULT};                  SlapReply rs = {REP_RESULT};
                   void *thrctx;
   
                   thrctx = ldap_pvt_thread_pool_context();
                 connection_fake_init( &conn, op, thrctx );                  connection_fake_init( &conn, op, thrctx );
                 op->o_bd = be;                  op->o_bd = be;
                 op->o_dn = be->be_rootdn;                  op->o_dn = be->be_rootdn;
                 op->o_ndn = be->be_rootndn;                  op->o_ndn = be->be_rootndn;
                 syncprov_checkpoint( op, &rs, on );                  syncprov_checkpoint( op, &rs, on );
         }                  ldap_pvt_thread_pool_context_reset( thrctx );
         for ( i=0; thrctx[i].key; i++) {  
                 if ( thrctx[i].xfree )  
                         thrctx[i].xfree( thrctx[i].key, thrctx[i].data );  
                 thrctx[i].key = NULL;  
         }          }
   
     return 0;      return 0;
Line 2273  syncprov_db_init( Line 2265  syncprov_db_init(
   
         csn_anlist[0].an_desc = slap_schema.si_ad_entryCSN;          csn_anlist[0].an_desc = slap_schema.si_ad_entryCSN;
         csn_anlist[0].an_name = slap_schema.si_ad_entryCSN->ad_cname;          csn_anlist[0].an_name = slap_schema.si_ad_entryCSN->ad_cname;
           csn_anlist[1].an_desc = slap_schema.si_ad_entryUUID;
           csn_anlist[1].an_name = slap_schema.si_ad_entryUUID->ad_cname;
   
         uuid_anlist[0].an_desc = slap_schema.si_ad_entryUUID;          uuid_anlist[0].an_desc = slap_schema.si_ad_entryUUID;
         uuid_anlist[0].an_name = slap_schema.si_ad_entryUUID->ad_cname;          uuid_anlist[0].an_name = slap_schema.si_ad_entryUUID->ad_cname;

Removed from v.1.56.2.11  
changed lines
  Added in v.1.104


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