Diff for /servers/slapd/overlays/syncprov.c between versions 1.56.2.21 and 1.119

version 1.56.2.21, 2005/11/14 18:06:14 version 1.119, 2005/10/14 22:31:22
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.124 2005/11/07 23:40:20 ando Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.118 2005/10/13 09:58: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 383  findbase_cb( Operation *op, SlapReply *r Line 383  findbase_cb( Operation *op, SlapReply *r
         return LDAP_SUCCESS;          return LDAP_SUCCESS;
 }  }
   
 static Filter generic_filter = { LDAP_FILTER_PRESENT, { 0 }, NULL };  
 static struct berval generic_filterstr = BER_BVC("(objectclass=*)");  
   
 static int  static int
 syncprov_findbase( Operation *op, fbase_cookie *fc )  syncprov_findbase( Operation *op, fbase_cookie *fc )
 {  {
Line 425  syncprov_findbase( Operation *op, fbase_ Line 422  syncprov_findbase( Operation *op, fbase_
                 fop.ors_tlimit = SLAP_NO_LIMIT;                  fop.ors_tlimit = SLAP_NO_LIMIT;
                 fop.ors_attrs = slap_anlist_no_attrs;                  fop.ors_attrs = slap_anlist_no_attrs;
                 fop.ors_attrsonly = 1;                  fop.ors_attrsonly = 1;
                 fop.ors_filter = &generic_filter;  
                 fop.ors_filterstr = generic_filterstr;  
   
                 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 483  syncprov_findbase( Operation *op, fbase_ Line 478  syncprov_findbase( Operation *op, fbase_
  * CSN, and generate Present records for them. We always collect this result   * CSN, and generate Present records for them. We always collect this result
  * in SyncID sets, even if there's only one match.   * in SyncID sets, even if there's only one match.
  */   */
 typedef enum find_csn_t {  #define FIND_MAXCSN     1
         FIND_MAXCSN     = 1,  #define FIND_CSN        2
         FIND_CSN        = 2,  #define FIND_PRESENT    3
         FIND_PRESENT    = 3  
 } find_csn_t;  
   
 static int  static int
 findmax_cb( Operation *op, SlapReply *rs )  findmax_cb( Operation *op, SlapReply *rs )
Line 566  findpres_cb( Operation *op, SlapReply *r Line 559  findpres_cb( Operation *op, SlapReply *r
 }  }
   
 static int  static int
 syncprov_findcsn( Operation *op, find_csn_t mode )  syncprov_findcsn( Operation *op, int mode )
 {  {
         slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;          slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;
         syncprov_info_t         *si = on->on_bi.bi_private;          syncprov_info_t         *si = on->on_bi.bi_private;
Line 736  syncprov_free_syncop( syncops *so ) Line 729  syncprov_free_syncop( syncops *so )
   
 /* Send a persistent search response */  /* Send a persistent search response */
 static int  static int
 syncprov_sendresp( Operation *op, opcookie *opc, syncops *so,  syncprov_sendresp( Operation *op, opcookie *opc, syncops *so, Entry **e, int mode)
         Entry **e, int mode )  
 {  {
         slap_overinst *on = opc->son;          slap_overinst *on = opc->son;
   
Line 1224  syncprov_checkpoint( Operation *op, Slap Line 1216  syncprov_checkpoint( Operation *op, Slap
         Operation opm;          Operation opm;
         struct berval bv[2];          struct berval bv[2];
         slap_callback cb = {0};          slap_callback cb = {0};
           int manage = get_manageDSAit(op);
   
         mod.sml_values = bv;          mod.sml_values = bv;
         bv[1].bv_val = NULL;          bv[1].bv_val = NULL;
Line 1244  syncprov_checkpoint( Operation *op, Slap Line 1237  syncprov_checkpoint( Operation *op, Slap
         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_bd->be_modify( &opm, rs );          opm.o_bd->be_modify( &opm, rs );
         if ( mod.sml_next != NULL ) {          opm.o_managedsait = manage;
                 slap_mods_free( mod.sml_next, 1 );  
         }  
 }  }
   
 static void  static void
Line 2148  sp_cf_gen(ConfigArgs *c) Line 2139  sp_cf_gen(ConfigArgs *c)
                                 rc = 1;                                  rc = 1;
                         }                          }
                         break;                          break;
                 case SP_USEHINT:  
                         if ( si->si_usehint ) {  
                                 c->value_int = 1;  
                         } else {  
                                 rc = 1;  
                         }  
                         break;  
                 }                  }
                 return rc;                  return rc;
         } else if ( c->op == LDAP_MOD_DELETE ) {          } else if ( c->op == LDAP_MOD_DELETE ) {
Line 2175  sp_cf_gen(ConfigArgs *c) Line 2159  sp_cf_gen(ConfigArgs *c)
                         else                          else
                                 rc = LDAP_NO_SUCH_ATTRIBUTE;                                  rc = LDAP_NO_SUCH_ATTRIBUTE;
                         break;                          break;
                 case SP_USEHINT:  
                         if ( si->si_usehint )  
                                 si->si_usehint = 0;  
                         else  
                                 rc = LDAP_NO_SUCH_ATTRIBUTE;  
                         break;  
                 }                  }
                 return rc;                  return rc;
         }          }
Line 2215  sp_cf_gen(ConfigArgs *c) Line 2193  sp_cf_gen(ConfigArgs *c)
         case SP_NOPRES:          case SP_NOPRES:
                 si->si_nopres = c->value_int;                  si->si_nopres = c->value_int;
                 break;                  break;
         case SP_USEHINT:  
                 si->si_usehint = c->value_int;  
                 break;  
         }          }
         return rc;          return rc;
 }  }
Line 2465  static int syncprov_parseCtrl ( Line 2440  static int syncprov_parseCtrl (
                         rs->sr_text = "Sync control : cookie decoding error";                          rs->sr_text = "Sync control : cookie decoding error";
                         return LDAP_PROTOCOL_ERROR;                          return LDAP_PROTOCOL_ERROR;
                 }                  }
                 tag = ber_peek_tag( ber, &len );  
         }          }
         if ( tag == LDAP_TAG_RELOAD_HINT ) {          if ( tag == LDAP_TAG_RELOAD_HINT ) {
                 if (( ber_scanf( ber, /*{*/ "b", &rhint )) == LBER_ERROR ) {                  if (( ber_scanf( ber, /*{*/ "b", &rhint )) == LBER_ERROR ) {
Line 2540  syncprov_init() Line 2514  syncprov_init()
   
         syncprov.on_bi.bi_cf_ocs = spocs;          syncprov.on_bi.bi_cf_ocs = spocs;
   
         generic_filter.f_desc = slap_schema.si_ad_objectClass;  
   
         rc = config_register_schema( spcfg, spocs );          rc = config_register_schema( spcfg, spocs );
         if ( rc ) return rc;          if ( rc ) return rc;
   

Removed from v.1.56.2.21  
changed lines
  Added in v.1.119


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