diff options
Diffstat (limited to 'server/server/config.cpp')
-rwxr-xr-x | server/server/config.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp index 4f32c0a..bbbdf54 100755 --- a/server/server/config.cpp +++ b/server/server/config.cpp @@ -2,14 +2,15 @@ extern logtofile *logger; -void reload_config_thread_func(config *cfg, boost::mutex *m) +void reload_config_thread_func(config *cfg, boost::mutex *lists_mutex, boost::mutex *cfg_mutex) { while(!boost::this_thread::interruption_requested()) { boost::this_thread::sleep(boost::posix_time::seconds(cfg->config_reload_interval())); if(boost::this_thread::interruption_requested()) return; - m->lock(); + lists_mutex->lock(); + cfg_mutex->lock(); cfg->load_vars(); cfg->load_cvars(); cfg->load_proxy_list(); @@ -18,19 +19,22 @@ void reload_config_thread_func(config *cfg, boost::mutex *m) cfg->load_deleted_list(); cfg->load_upload_list(); cfg->load_servers_list(); - m->unlock(); + cfg_mutex->unlock(); + lists_mutex->unlock(); } } -void speed_test_thread_func(config *cfg, int check_interval, std::list<config::proxy_entry>* proxy_list, std::list<config::static_proxy_entry> *static_proxy_list, const std::string& test_url, boost::mutex *m) +void speed_test_thread_func(config *cfg, int check_interval, std::list<config::proxy_entry>* proxy_list, std::list<config::static_proxy_entry> *static_proxy_list, const std::string& test_url, boost::mutex *lists_mutex, boost::mutex *cfg_mutex) { while(!boost::this_thread::interruption_requested()) { - m->lock(); + cfg_mutex->lock(); for(std::list<config::static_proxy_entry>::iterator i = static_proxy_list->begin(), end = static_proxy_list->end(); i != end; ++i) { + lists_mutex->lock(); speedtest t(test_url); size_t sp = t.test(&(*i)); + lists_mutex->unlock(); if(cfg->log_speed()) { char port[10]; @@ -51,7 +55,7 @@ void speed_test_thread_func(config *cfg, int check_interval, std::list<config::p boost::this_thread::sleep(boost::posix_time::seconds(1)); } */ // delete l; - m->unlock(); + cfg_mutex->unlock(); boost::this_thread::sleep(boost::posix_time::seconds(check_interval)); } } @@ -130,8 +134,8 @@ config::config(const char *pth): cfg_reload_thr(NULL), speed_test_thr(NULL) load_deleted_list(); load_upload_list(); load_servers_list(); - cfg_reload_thr = new boost::thread(boost::bind(reload_config_thread_func, this, &lists_mutex)); - speed_test_thr = new boost::thread(boost::bind(speed_test_thread_func, this, vars.proxy_check_interval, &proxy_list, &static_proxy_list, vars.speed_test_file_url, &lists_mutex)); + cfg_reload_thr = new boost::thread(boost::bind(reload_config_thread_func, this, &lists_mutex, &cfg_mutex)); + speed_test_thr = new boost::thread(boost::bind(speed_test_thread_func, this, vars.proxy_check_interval, &proxy_list, &static_proxy_list, vars.speed_test_file_url, &lists_mutex, &cfg_mutex)); } const int config::get_int(const std::string& data, const char* var, int default_) { |