Diff for /servers/slapd/overlays/syncprov.c between versions 1.75 and 1.76

version 1.75, 2005/04/24 20:55:21 version 1.76, 2005/04/24 21:20:15
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.74 2005/04/15 04:58:04 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.75 2005/04/24 20:55:21 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 131  typedef struct opcookie { Line 131  typedef struct opcookie {
         struct berval sndn;          struct berval sndn;
         struct berval suuid;    /* UUID of entry */          struct berval suuid;    /* UUID of entry */
         struct berval sctxcsn;          struct berval sctxcsn;
         syncops *shead;         /* head of si_ops when we started */  
         int sreference; /* Is the entry a reference? */          int sreference; /* Is the entry a reference? */
 } opcookie;  } opcookie;
   
Line 986  syncprov_matchops( Operation *op, opcook Line 985  syncprov_matchops( Operation *op, opcook
                         ber_dupbv_x( &opc->suuid, &a->a_nvals[0], op->o_tmpmemctx );                          ber_dupbv_x( &opc->suuid, &a->a_nvals[0], op->o_tmpmemctx );
         }          }
   
         if (saveit) {          ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
                 ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );          for (ss = si->si_ops, sprev = (syncops *)&si->si_ops; ss;
                 opc->shead = si->si_ops;  
         }  
         for (ss = opc->shead, sprev = (syncops *)&si->si_ops; ss;  
                 sprev = ss, ss=snext)                  sprev = ss, ss=snext)
         {          {
                 syncmatches *sm;                  syncmatches *sm;
Line 1038  syncprov_matchops( Operation *op, opcook Line 1034  syncprov_matchops( Operation *op, opcook
                                 opc->smatches = sm;                                  opc->smatches = sm;
                         } else {                          } else {
                                 /* if found send UPDATE else send ADD */                                  /* if found send UPDATE else send ADD */
                                   ss->s_inuse++;
                                   ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
                                 syncprov_sendresp( op, opc, ss, &e,                                  syncprov_sendresp( op, opc, ss, &e,
                                         found ? LDAP_SYNC_MODIFY : LDAP_SYNC_ADD, 1 );                                          found ? LDAP_SYNC_MODIFY : LDAP_SYNC_ADD, 1 );
                                   ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
                                   ss->s_inuse--;
                         }                          }
                 } else if ( !saveit && found ) {                  } else if ( !saveit && found ) {
                         /* send DELETE */                          /* send DELETE */
                           ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
                         syncprov_sendresp( op, opc, ss, NULL, LDAP_SYNC_DELETE, 1 );                          syncprov_sendresp( op, opc, ss, NULL, LDAP_SYNC_DELETE, 1 );
                           ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
                 }                  }
         }          }
         if (saveit)          ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
                 ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );  
 done:  done:
         if ( op->o_tag != LDAP_REQ_ADD && e ) {          if ( op->o_tag != LDAP_REQ_ADD && e ) {
                 op->o_bd->bd_info = (BackendInfo *)on->on_info;                  op->o_bd->bd_info = (BackendInfo *)on->on_info;

Removed from v.1.75  
changed lines
  Added in v.1.76


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