Changeset 4404

Show
Ignore:
Timestamp:
10/03/06 10:02:47 (2 years ago)
Author:
morris
Message:

Iterate using all keys instead

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trackerd/trunk/trackerd/servers.c

    r4398 r4404  
    236236static void wt_update_servers(wi_timer_t *timer) { 
    237237        wi_enumerator_t         *enumerator; 
    238         wi_array_t                      *servers; 
    239238        wt_server_t                     *server; 
    240239        void                            *key; 
    241240        wi_time_interval_t      interval, update; 
    242  
    243         servers = wi_array_init(wi_array_alloc()); 
     241        wi_boolean_t            changed = false; 
     242 
    244243        interval = wi_time_interval(); 
    245244 
    246245        wi_hash_wrlock(wt_servers); 
    247246         
    248         enumerator = wi_hash_key_enumerator(wt_servers); 
     247        enumerator = wi_array_data_enumerator(wi_hash_all_keys(wt_servers)); 
    249248         
    250249        while((key = wi_enumerator_next_data(enumerator))) { 
     
    253252                 
    254253                if(interval - update > wt_settings.minupdatetime) { 
    255                         wi_array_add_data(servers, key); 
    256  
    257254                        wi_log_warn(WI_STR("Deleting \"%@\" with URL %@: Last update %.0f seconds ago considered too slow"), 
    258255                                                server->name, server->url, interval - update); 
    259256 
    260257                        wt_servers_remove_stats_for_server(server); 
     258                        wi_hash_remove_data_for_key(wt_servers, key); 
     259                         
     260                        changed = true; 
    261261                } 
    262262        } 
    263263         
    264         enumerator = wi_array_data_enumerator(servers); 
    265          
    266         while((key = wi_enumerator_next_data(enumerator))) 
    267                 wi_hash_remove_data_for_key(wt_servers, key); 
    268                  
    269         wi_hash_unlock(wt_servers); 
    270  
    271         if(wi_array_count(servers) > 0) { 
     264        wi_hash_unlock(wt_servers); 
     265 
     266        if(changed) { 
    272267                wi_lock_lock(wt_status_lock); 
    273268                wt_write_status(true); 
     
    276271                wt_write_servers(); 
    277272        } 
    278          
    279         wi_release(servers); 
    280273} 
    281274