Diff for /servers/slapd/overlays/syncprov.c between versions 1.51 and 1.52

version 1.51, 2004/12/09 18:52:30 version 1.52, 2004/12/09 21:21:26
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.50 2004/12/09 08:20:11 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.51 2004/12/09 18:52:30 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 820  static void Line 820  static void
 syncprov_free_syncop( syncops *so )  syncprov_free_syncop( syncops *so )
 {  {
         syncres *sr, *srnext;          syncres *sr, *srnext;
           GroupAssertion *ga, *gnext;
   
         ldap_pvt_thread_mutex_lock( &so->s_mutex );          ldap_pvt_thread_mutex_lock( &so->s_mutex );
         so->s_inuse--;          so->s_inuse--;
Line 829  syncprov_free_syncop( syncops *so ) Line 830  syncprov_free_syncop( syncops *so )
         }          }
         ldap_pvt_thread_mutex_unlock( &so->s_mutex );          ldap_pvt_thread_mutex_unlock( &so->s_mutex );
         filter_free( so->s_op->ors_filter );          filter_free( so->s_op->ors_filter );
           for ( ga = so->s_op->o_groups; ga; ga=gnext ) {
                   gnext = ga->ga_next;
                   ch_free( ga );
           }
         ch_free( so->s_op );          ch_free( so->s_op );
         ch_free( so->s_base.bv_val );          ch_free( so->s_base.bv_val );
         for ( sr=so->s_res; sr; sr=srnext ) {          for ( sr=so->s_res; sr; sr=srnext ) {
Line 840  syncprov_free_syncop( syncops *so ) Line 845  syncprov_free_syncop( syncops *so )
 }  }
   
 static int  static int
 syncprov_drop_psearch( syncops *so )  syncprov_drop_psearch( syncops *so, int lock )
 {  {
         ldap_pvt_thread_mutex_lock( &so->s_op->o_conn->c_mutex );          if ( lock )
                   ldap_pvt_thread_mutex_lock( &so->s_op->o_conn->c_mutex );
         so->s_op->o_conn->c_n_ops_executing--;          so->s_op->o_conn->c_n_ops_executing--;
         so->s_op->o_conn->c_n_ops_completed++;          so->s_op->o_conn->c_n_ops_completed++;
         ldap_pvt_thread_mutex_unlock( &so->s_op->o_conn->c_mutex );          LDAP_STAILQ_REMOVE( &so->s_op->o_conn->c_ops, so->s_op, slap_op,
                   o_next );
           if ( lock )
                   ldap_pvt_thread_mutex_unlock( &so->s_op->o_conn->c_mutex );
         syncprov_free_syncop( so );          syncprov_free_syncop( so );
 }  }
   
Line 873  syncprov_op_abandon( Operation *op, Slap Line 882  syncprov_op_abandon( Operation *op, Slap
                         rs->sr_err = LDAP_CANCELLED;                          rs->sr_err = LDAP_CANCELLED;
                         send_ldap_result( so->s_op, rs );                          send_ldap_result( so->s_op, rs );
                 }                  }
                 syncprov_drop_psearch( so );                  syncprov_drop_psearch( so, 0 );
         }          }
         return SLAP_CB_CONTINUE;          return SLAP_CB_CONTINUE;
 }  }
Line 947  syncprov_matchops( Operation *op, opcook Line 956  syncprov_matchops( Operation *op, opcook
                         send_ldap_error( ss->s_op, &rs, LDAP_SYNC_REFRESH_REQUIRED,                          send_ldap_error( ss->s_op, &rs, LDAP_SYNC_REFRESH_REQUIRED,
                                 "search base has changed" );                                  "search base has changed" );
                         sprev->s_next = snext;                          sprev->s_next = snext;
                         syncprov_drop_psearch( ss );                          syncprov_drop_psearch( ss, 1 );
                         continue;                          continue;
                 }                  }
   
Line 1562  syncprov_detach_op( Operation *op, synco Line 1571  syncprov_detach_op( Operation *op, synco
                 op2->o_groups = g2;                  op2->o_groups = g2;
         }          }
   
         /* Increment number of ops so that idletimeout ignores us */          /* Add op2 to conn so abandon will find us */
         ldap_pvt_thread_mutex_lock( &op->o_conn->c_mutex );          ldap_pvt_thread_mutex_lock( &op->o_conn->c_mutex );
         op->o_conn->c_n_ops_executing++;          op->o_conn->c_n_ops_executing++;
         op->o_conn->c_n_ops_completed--;          op->o_conn->c_n_ops_completed--;
           LDAP_STAILQ_INSERT_TAIL( &op->o_conn->c_ops, op2, o_next );
         ldap_pvt_thread_mutex_unlock( &op->o_conn->c_mutex );          ldap_pvt_thread_mutex_unlock( &op->o_conn->c_mutex );
 }  }
   

Removed from v.1.51  
changed lines
  Added in v.1.52


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