Diff for /servers/slapd/overlays/syncprov.c between versions 1.4 and 1.5

version 1.4, 2004/11/21 17:25:02 version 1.5, 2004/11/22 02:24:59
Line 177  findpres_cb( Operation *op, SlapReply *r Line 177  findpres_cb( Operation *op, SlapReply *r
 {  {
         slap_callback *sc = op->o_callback;          slap_callback *sc = op->o_callback;
         fpres_cookie *pc = sc->sc_private;          fpres_cookie *pc = sc->sc_private;
         int ret;          int ret = SLAP_CB_CONTINUE;
   
         if ( rs->sr_type == REP_SEARCH ) {          if ( rs->sr_type == REP_SEARCH ) {
                   Debug(LDAP_DEBUG_TRACE, "present %s\n", rs->sr_entry->e_name.bv_val, 0, 0);
                 ret = slap_build_syncUUID_set( op, &pc->uuids, rs->sr_entry );                  ret = slap_build_syncUUID_set( op, &pc->uuids, rs->sr_entry );
                 if ( ret > 0 ) {                  if ( ret > 0 ) {
                         pc->num++;                          pc->num++;
                           ret = LDAP_SUCCESS;
                         if ( pc->num == SLAP_SYNCUUID_SET_SIZE ) {                          if ( pc->num == SLAP_SYNCUUID_SET_SIZE ) {
                                   rs->sr_rspoid = LDAP_SYNC_INFO;
                                 ret = slap_send_syncinfo( op, rs, LDAP_TAG_SYNC_ID_SET, NULL,                                  ret = slap_send_syncinfo( op, rs, LDAP_TAG_SYNC_ID_SET, NULL,
                                         0, pc->uuids, 0 );                                          0, pc->uuids, 0 );
                                 ber_bvarray_free_x( pc->uuids, op->o_tmpmemctx );                                  ber_bvarray_free_x( pc->uuids, op->o_tmpmemctx );
Line 196  findpres_cb( Operation *op, SlapReply *r Line 199  findpres_cb( Operation *op, SlapReply *r
         } else if ( rs->sr_type == REP_RESULT ) {          } else if ( rs->sr_type == REP_RESULT ) {
                 ret = rs->sr_err;                  ret = rs->sr_err;
                 if ( pc->num ) {                  if ( pc->num ) {
                           rs->sr_rspoid = LDAP_SYNC_INFO;
                         ret = slap_send_syncinfo( op, rs, LDAP_TAG_SYNC_ID_SET, NULL,                          ret = slap_send_syncinfo( op, rs, LDAP_TAG_SYNC_ID_SET, NULL,
                                 0, pc->uuids, 0 );                                  0, pc->uuids, 0 );
                         ber_bvarray_free_x( pc->uuids, op->o_tmpmemctx );                          ber_bvarray_free_x( pc->uuids, op->o_tmpmemctx );
Line 281  syncprov_findcsn( Operation *op, int mod Line 285  syncprov_findcsn( Operation *op, int mod
         cf.f_next = NULL;          cf.f_next = NULL;
   
         fop.o_callback = &cb;          fop.o_callback = &cb;
         fop.ors_slimit = 1;  
         fop.ors_tlimit = SLAP_NO_LIMIT;          fop.ors_tlimit = SLAP_NO_LIMIT;
         fop.ors_filter = &cf;          fop.ors_filter = &cf;
         fop.ors_filterstr = fbuf;          fop.ors_filterstr = fbuf;
Line 380  syncprov_matchops( Operation *op, opcook Line 383  syncprov_matchops( Operation *op, opcook
 }  }
   
 static int  static int
   syncprov_op_cleanup( Operation *op, SlapReply *rs )
   {
           slap_callback *cb = op->o_callback;
           opcookie *opc = (opcookie *)(cb+1);
           syncmatches *sm, *snext;
   
           for (sm = opc->smatches; sm; sm=snext) {
                   snext = sm->sm_next;
                   op->o_tmpfree( sm, op->o_tmpmemctx );
           }
           op->o_callback = cb->sc_next;
           op->o_tmpfree(cb, op->o_tmpmemctx);
   }
   
   static int
 syncprov_op_response( Operation *op, SlapReply *rs )  syncprov_op_response( Operation *op, SlapReply *rs )
 {  {
         slap_callback *cb = op->o_callback;          slap_callback *cb = op->o_callback;
         opcookie *opc = (opcookie *)(cb+1);          opcookie *opc = (opcookie *)(cb+1);
         slap_overinst *on = opc->son;          slap_overinst *on = opc->son;
         syncprov_info_t         *si = on->on_bi.bi_private;          syncprov_info_t         *si = on->on_bi.bi_private;
         syncmatches *sm, *snext;          syncmatches *sm;
   
         if ( rs->sr_err == LDAP_SUCCESS )          if ( rs->sr_err == LDAP_SUCCESS )
         {          {
Line 423  syncprov_op_response( Operation *op, Sla Line 441  syncprov_op_response( Operation *op, Sla
                 }                  }
   
         }          }
         for (sm = opc->smatches; sm; sm=snext) {  
                 snext = sm->sm_next;  
                 op->o_tmpfree( sm, op->o_tmpmemctx );  
         }  
         op->o_callback = cb->sc_next;  
         op->o_tmpfree(cb, op->o_tmpmemctx);  
         return SLAP_CB_CONTINUE;          return SLAP_CB_CONTINUE;
 }  }
   
Line 504  syncprov_op_mod( Operation *op, SlapRepl Line 516  syncprov_op_mod( Operation *op, SlapRepl
         opcookie *opc = (opcookie *)(cb+1);          opcookie *opc = (opcookie *)(cb+1);
         opc->son = on;          opc->son = on;
         cb->sc_response = syncprov_op_response;          cb->sc_response = syncprov_op_response;
           cb->sc_cleanup = syncprov_op_cleanup;
         cb->sc_private = opc;          cb->sc_private = opc;
         cb->sc_next = op->o_callback;          cb->sc_next = op->o_callback;
         op->o_callback = cb;          op->o_callback = cb;
Line 596  syncprov_op_search( Operation *op, SlapR Line 609  syncprov_op_search( Operation *op, SlapR
                 /* Is the CSN still present in the database? */                  /* Is the CSN still present in the database? */
                 if ( syncprov_findcsn( op, FIND_CSN ) != LDAP_SUCCESS ) {                  if ( syncprov_findcsn( op, FIND_CSN ) != LDAP_SUCCESS ) {
                         /* No, so a reload is required */                          /* No, so a reload is required */
   #if 0           /* the consumer doesn't seem to send this hint */
                         if ( op->o_sync_rhint == 0 ) {                          if ( op->o_sync_rhint == 0 ) {
                                 send_ldap_error( op, rs, LDAP_SYNC_REFRESH_REQUIRED, "sync cookie is stale" );                                  send_ldap_error( op, rs, LDAP_SYNC_REFRESH_REQUIRED, "sync cookie is stale" );
                                 return rs->sr_err;                                  return rs->sr_err;
                         }                          }
   #endif
                 } else {                  } else {
                         /* Does it match the current ctxCSN? */                          /* Does it match the current ctxCSN? */
                         if ( bvmatch( op->o_sync_state.ctxcsn, &si->si_ctxcsn )) {                          if ( bvmatch( op->o_sync_state.ctxcsn, &si->si_ctxcsn )) {

Removed from v.1.4  
changed lines
  Added in v.1.5


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