Diff for /servers/slapd/overlays/syncprov.c between versions 1.276 and 1.278

version 1.276, 2009/03/13 21:59:20 version 1.278, 2009/03/13 22:25:00
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.275 2009/03/13 07:33:34 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.277 2009/03/13 22:09:14 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 2377  syncprov_op_search( Operation *op, SlapR Line 2377  syncprov_op_search( Operation *op, SlapR
   
                 /* If nothing has changed, shortcut it */                  /* If nothing has changed, shortcut it */
                 if ( srs->sr_state.numcsns == numcsns ) {                  if ( srs->sr_state.numcsns == numcsns ) {
                         int i, j;                          int i, j, newer;
                         for ( i=0; i<srs->sr_state.numcsns; i++ ) {                          for ( i=0; i<srs->sr_state.numcsns; i++ ) {
                                 for ( j=0; j<numcsns; j++ ) {                                  for ( j=0; j<numcsns; j++ ) {
                                         if ( srs->sr_state.sids[i] != sids[j] )                                          if ( srs->sr_state.sids[i] != sids[j] )
                                                 continue;                                                  continue;
                                         if ( !bvmatch( &srs->sr_state.ctxcsn[i], &ctxcsn[j] ))                                          newer = ber_bvcmp( &srs->sr_state.ctxcsn[i], &ctxcsn[j] );
                                           /* If our state is newer, tell consumer about changes */
                                           if ( newer < 0 )
                                                 changed = SS_CHANGED;                                                  changed = SS_CHANGED;
                                           else if ( newer > 0 ) {
                                           /* our state is older, tell consumer nothing */
                                                   if ( sop ) {
                                                           syncops **sp = &si->si_ops;
                                                           
                                                           ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
                                                           while ( *sp != sop )
                                                                   sp = &(*sp)->s_next;
                                                           *sp = sop->s_next;
                                                           ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
                                                           ch_free( sop );
                                                   }
                                                   rs->sr_err = LDAP_SUCCESS;
                                                   rs->sr_ctrls = NULL;
                                                   send_ldap_result( op, rs );
                                                   return rs->sr_err;
                                           }
                                         break;                                          break;
                                 }                                  }
                                 if ( changed )                                  if ( changed )

Removed from v.1.276  
changed lines
  Added in v.1.278


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