Diff for /servers/slapd/overlays/syncprov.c between versions 1.56.2.4 and 1.72

version 1.56.2.4, 2005/01/28 17:29:50 version 1.72, 2005/03/28 22:12:05
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.56.2.3 2005/01/20 18:04:04 kurt Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.71 2005/03/13 23:12:48 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 604  syncprov_findcsn( Operation *op, int mod Line 604  syncprov_findcsn( Operation *op, int mod
         char cbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];          char cbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];
         struct berval fbuf, maxcsn;          struct berval fbuf, maxcsn;
         Filter cf, af;          Filter cf, af;
         AttributeAssertion eq;  #ifdef LDAP_COMP_MATCH
           AttributeAssertion eq = { NULL, BER_BVNULL, NULL };
   #else
           AttributeAssertion eq = { NULL, BER_BVNULL };
   #endif
         int i, rc = LDAP_SUCCESS;          int i, rc = LDAP_SUCCESS;
         fpres_cookie pcookie;          fpres_cookie pcookie;
         sync_control *srs = NULL;          sync_control *srs = NULL;
Line 861  syncprov_drop_psearch( syncops *so, int Line 865  syncprov_drop_psearch( syncops *so, int
 }  }
   
 static int  static int
   syncprov_ab_cleanup( Operation *op, SlapReply *rs )
   {
           slap_callback *sc = op->o_callback;
           op->o_callback = sc->sc_next;
           syncprov_drop_psearch( op->o_callback->sc_private, 0 );
           op->o_tmpfree( sc, op->o_tmpmemctx );
           return 0;
   }
   
   static int
 syncprov_op_abandon( Operation *op, SlapReply *rs )  syncprov_op_abandon( Operation *op, SlapReply *rs )
 {  {
         slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;          slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;
Line 881  syncprov_op_abandon( Operation *op, Slap Line 895  syncprov_op_abandon( Operation *op, Slap
         if ( so ) {          if ( so ) {
                 /* Is this really a Cancel exop? */                  /* Is this really a Cancel exop? */
                 if ( op->o_tag != LDAP_REQ_ABANDON ) {                  if ( op->o_tag != LDAP_REQ_ABANDON ) {
                           so->s_op->o_cancel = SLAP_CANCEL_ACK;
                         rs->sr_err = LDAP_CANCELLED;                          rs->sr_err = LDAP_CANCELLED;
                         send_ldap_result( so->s_op, rs );                          send_ldap_result( so->s_op, rs );
                           if ( so->s_flags & PS_IS_DETACHED ) {
                                   slap_callback *cb;
                                   cb = op->o_tmpcalloc( 1, sizeof(slap_callback), op->o_tmpmemctx );
                                   cb->sc_cleanup = syncprov_ab_cleanup;
                                   cb->sc_next = op->o_callback;
                                   cb->sc_private = so;
                                   return SLAP_CB_CONTINUE;
                           }
                 }                  }
                 syncprov_drop_psearch( so, 0 );                  syncprov_drop_psearch( so, 0 );
         }          }
Line 1222  syncprov_playlog( Operation *op, SlapRep Line 1245  syncprov_playlog( Operation *op, SlapRep
                 SlapReply frs = { REP_RESULT };                  SlapReply frs = { REP_RESULT };
                 int rc;                  int rc;
                 Filter mf, af;                  Filter mf, af;
   #ifdef LDAP_COMP_MATCH
                   AttributeAssertion eq = { NULL, BER_BVNULL, NULL };
   #else
                 AttributeAssertion eq;                  AttributeAssertion eq;
   #endif
                 slap_callback cb = {0};                  slap_callback cb = {0};
   
                 fop = *op;                  fop = *op;
Line 1468  syncprov_op_mod( Operation *op, SlapRepl Line 1495  syncprov_op_mod( Operation *op, SlapRepl
                                 ldap_pvt_thread_mutex_unlock( &mt->mt_mutex );                                  ldap_pvt_thread_mutex_unlock( &mt->mt_mutex );
                                 ldap_pvt_thread_yield();                                  ldap_pvt_thread_yield();
                                 ldap_pvt_thread_mutex_lock( &mt->mt_mutex );                                  ldap_pvt_thread_mutex_lock( &mt->mt_mutex );
   
                                   /* clean up if the caller is giving up */
                                   if ( op->o_abandon ) {
                                           modinst *m2;
                                           for ( m2 = mt->mt_mods; m2->mi_next != mi;
                                                   m2 = m2->mi_next );
                                           m2->mi_next = mi->mi_next;
                                           if ( mt->mt_tail == mi ) mt->mt_tail = m2;
                                           op->o_tmpfree( cb, op->o_tmpmemctx );
                                           ldap_pvt_thread_mutex_unlock( &mt->mt_mutex );
                                           return SLAPD_ABANDON;
                                   }
                         }                          }
                         ldap_pvt_thread_mutex_unlock( &mt->mt_mutex );                          ldap_pvt_thread_mutex_unlock( &mt->mt_mutex );
                 } else {                  } else {
Line 1837  shortcut: Line 1876  shortcut:
         fava->f_choice = LDAP_FILTER_LE;          fava->f_choice = LDAP_FILTER_LE;
         fava->f_ava = op->o_tmpalloc( sizeof(AttributeAssertion), op->o_tmpmemctx );          fava->f_ava = op->o_tmpalloc( sizeof(AttributeAssertion), op->o_tmpmemctx );
         fava->f_ava->aa_desc = slap_schema.si_ad_entryCSN;          fava->f_ava->aa_desc = slap_schema.si_ad_entryCSN;
   #ifdef LDAP_COMP_MATCH
           fava->f_ava->aa_cf = NULL;
   #endif
         ber_dupbv_x( &fava->f_ava->aa_value, &ctxcsn, op->o_tmpmemctx );          ber_dupbv_x( &fava->f_ava->aa_value, &ctxcsn, op->o_tmpmemctx );
         fand->f_and = fava;          fand->f_and = fava;
         if ( gotstate ) {          if ( gotstate ) {
Line 1845  shortcut: Line 1887  shortcut:
                 fava->f_choice = LDAP_FILTER_GE;                  fava->f_choice = LDAP_FILTER_GE;
                 fava->f_ava = op->o_tmpalloc( sizeof(AttributeAssertion), op->o_tmpmemctx );                  fava->f_ava = op->o_tmpalloc( sizeof(AttributeAssertion), op->o_tmpmemctx );
                 fava->f_ava->aa_desc = slap_schema.si_ad_entryCSN;                  fava->f_ava->aa_desc = slap_schema.si_ad_entryCSN;
   #ifdef LDAP_COMP_MATCH
                   fava->f_ava->aa_cf = NULL;
   #endif
                 ber_dupbv_x( &fava->f_ava->aa_value, &srs->sr_state.ctxcsn, op->o_tmpmemctx );                  ber_dupbv_x( &fava->f_ava->aa_value, &srs->sr_state.ctxcsn, op->o_tmpmemctx );
         }          }
         fava->f_next = op->ors_filter;          fava->f_next = op->ors_filter;

Removed from v.1.56.2.4  
changed lines
  Added in v.1.72


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