summaryrefslogtreecommitdiff
path: root/server/server/config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/server/config.cpp')
-rwxr-xr-xserver/server/config.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp
index bbbdf54..3be45bd 100755
--- a/server/server/config.cpp
+++ b/server/server/config.cpp
@@ -2,7 +2,7 @@
extern logtofile *logger;
-void reload_config_thread_func(config *cfg, boost::mutex *lists_mutex, boost::mutex *cfg_mutex)
+void reload_config_thread_func(config *cfg, boost::mutex *lists_mutex)
{
while(!boost::this_thread::interruption_requested())
{
@@ -10,7 +10,6 @@ void reload_config_thread_func(config *cfg, boost::mutex *lists_mutex, boost::mu
if(boost::this_thread::interruption_requested())
return;
lists_mutex->lock();
- cfg_mutex->lock();
cfg->load_vars();
cfg->load_cvars();
cfg->load_proxy_list();
@@ -19,21 +18,23 @@ void reload_config_thread_func(config *cfg, boost::mutex *lists_mutex, boost::mu
cfg->load_deleted_list();
cfg->load_upload_list();
cfg->load_servers_list();
- 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 *lists_mutex, boost::mutex *cfg_mutex)
+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)
{
while(!boost::this_thread::interruption_requested())
{
- cfg_mutex->lock();
- for(std::list<config::static_proxy_entry>::iterator i = static_proxy_list->begin(), end = static_proxy_list->end(); i != end; ++i)
+ std::list<config::static_proxy_entry> tmp_list = *static_proxy_list;
+ for(std::list<config::static_proxy_entry>::iterator i = tmp_list.begin(), end = tmp_list.end(); i != end; ++i)
{
- lists_mutex->lock();
speedtest t(test_url);
size_t sp = t.test(&(*i));
+ lists_mutex->lock();
+ std::list<config::static_proxy_entry>::iterator it = std::find(static_proxy_list->begin(), static_proxy_list->end(), *i);
+ if(it != static_proxy_list->end())
+ *it = *i;
lists_mutex->unlock();
if(cfg->log_speed())
{
@@ -55,7 +56,6 @@ 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;
- cfg_mutex->unlock();
boost::this_thread::sleep(boost::posix_time::seconds(check_interval));
}
}
@@ -134,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, &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));
+ 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));
}
const int config::get_int(const std::string& data, const char* var, int default_)
{