summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2012-03-24 19:24:20 +0200
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2012-03-24 19:24:20 +0200
commit3faa907f6e8597ffae5b9f7db8567fe5fab8c9f6 (patch)
tree6a78ddda5b611cbe19822fb35afbdf82a673d359 /server
parent165a86baaeaa1219ea8e2a892e1ac90596038a66 (diff)
more accurate speed calculation
Diffstat (limited to 'server')
-rwxr-xr-xserver/server/config.cpp14
-rw-r--r--server/server/speedtest.cpp22
2 files changed, 21 insertions, 15 deletions
diff --git a/server/server/config.cpp b/server/server/config.cpp
index 3be45bd..98db729 100755
--- a/server/server/config.cpp
+++ b/server/server/config.cpp
@@ -35,17 +35,23 @@ void speed_test_thread_func(config *cfg, int check_interval, std::list<config::p
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();
+ else if(cfg->debug())
+ {
+ while(!logger)
+ boost::this_thread::sleep(boost::posix_time::milliseconds(200));
+ logger->lock();
+ *logger << time_str() << ": proxy "<<i->host<<":"<<i->port<<" not found in current proxy list\n";
+ logger->unlock();
+ }
if(cfg->log_speed())
{
- char port[10];
- snprintf(port, 9, "%d", i->port);
while(!logger)
boost::this_thread::sleep(boost::posix_time::milliseconds(200));
logger->lock();
- *logger << time_str() << ": "<<i->host<<":"<<port<<"\t"<<sp<<"\n";
+ *logger << time_str() << ": "<<i->host<<":"<<i->port<<"\t"<<sp<<"\n";
logger->unlock();
}
+ lists_mutex->unlock();
boost::this_thread::sleep(boost::posix_time::seconds(1));
}
/* for(std::list<config::proxy_entry>::iterator i = proxy_list->begin(), end = proxy_list->end(); i != end; ++i)
diff --git a/server/server/speedtest.cpp b/server/server/speedtest.cpp
index d1d9876..8a2c289 100644
--- a/server/server/speedtest.cpp
+++ b/server/server/speedtest.cpp
@@ -88,21 +88,21 @@ size_t speedtest::test(config::proxy_entry_base *p)
else
speed = chunk.size;
}
- p->speed_list.push_back(speed);
- }
- while(p->speed_list.size() > 10)
- p->speed_list.pop_front();
- if(!p->speed_list.empty())
- {
if(speed)
{
- size_t speed_sum = 0;
- for(std::list<size_t>::iterator i = p->speed_list.begin(), end = p->speed_list.end(); i != end; ++i)
- speed_sum += *i;
- speed = speed_sum/p->speed_list.size();
+ p->speed_list.push_back(speed);
+ while(p->speed_list.size() > 10)
+ p->speed_list.pop_front();
+ if(!p->speed_list.empty())
+ {
+ size_t speed_sum = 0;
+ for(std::list<size_t>::iterator i = p->speed_list.begin(), end = p->speed_list.end(); i != end; ++i)
+ speed_sum += *i;
+ speed = speed_sum/p->speed_list.size();
+ }
}
- p->speed = speed;
}
+ p->speed = speed;
return speed;
}