diff options
author | Alex Borisov <borisov.alexandr@rambler.ru> | 2011-11-17 01:16:39 +0200 |
---|---|---|
committer | Alex Borisov <borisov.alexandr@rambler.ru> | 2011-11-17 01:16:39 +0200 |
commit | 3b45f27f389976718efaccdf71878e5455303da2 (patch) | |
tree | 4db4ee5720912375fb7b2287bb75a1b4a9a768ad | |
parent | b068f321dd9c6077c590473c4f108be87e7eb99d (diff) |
Subsequent config updates. FIX data parsing bug
-rw-r--r-- | client/Config.cpp | 12 | ||||
-rw-r--r-- | client/Config.h | 3 | ||||
-rw-r--r-- | client/UpdatedConfig.cpp | 13 | ||||
-rw-r--r-- | client/config.cfg | 2 |
4 files changed, 27 insertions, 3 deletions
diff --git a/client/Config.cpp b/client/Config.cpp index 6b1d4f9..abf090a 100644 --- a/client/Config.cpp +++ b/client/Config.cpp @@ -187,6 +187,10 @@ void Config::ParseConfig(string data) } else if (key.compare("server") == 0) { + /** + * @todo clear list of previous servers on config update<br/> + * when server will be able to sent valid config.cfg data + */ ServerEntry server(value); servers.push_back(server); } @@ -223,8 +227,10 @@ void Config::ParseConfig(string data) void Config::ParseGenericProxies(string data) { - stringstream proxies(data, ios_base::in); + /* clear previous proxies */ + genericProxy.clear(); + stringstream proxies(data, ios_base::in); const int str_size = 512; char str[str_size] = {0}; while (! proxies.eof()) @@ -242,8 +248,10 @@ void Config::ParseGenericProxies(string data) void Config::ParseStaticPorxies(string data) { - stringstream proxies(data, ios_base::in); + /* clear previous proxies */ + staticProxy.clear(); + stringstream proxies(data, ios_base::in); const int str_size = 512; char str[str_size] = {0}; while (! proxies.eof()) diff --git a/client/Config.h b/client/Config.h index 26ee56c..091bec2 100644 --- a/client/Config.h +++ b/client/Config.h @@ -218,6 +218,9 @@ protected: */ void ParseFirewalls(string data); + /** + * @brief time between subsequent config updates + */ unsigned updateInterval; vector<ServerEntry> servers; private: diff --git a/client/UpdatedConfig.cpp b/client/UpdatedConfig.cpp index 1bae8a2..f8b0fcb 100644 --- a/client/UpdatedConfig.cpp +++ b/client/UpdatedConfig.cpp @@ -135,6 +135,19 @@ end: else { Logger::Info("Config successfully updated!\n"); + + /* reset retry params and setup timer to fire on next planned update */ + time = 0; + updateStatus = 0; + activeSrvIndex = 0; + retryFailed = false; + + configUpdateTimer->stop(); + configUpdateTimer->setInterval(updateInterval * 1000); + if (! configUpdateTimer->isActive()) + { + configUpdateTimer->start(); + } emit updated(); } }
\ No newline at end of file diff --git a/client/config.cfg b/client/config.cfg index b9c30c9..1f0ed0f 100644 --- a/client/config.cfg +++ b/client/config.cfg @@ -1,4 +1,4 @@ -config_update_interval=600; +config_update_interval=300; client_update_interval=60000; server=127.0.0.1 600 60; welcome_msg=Привет маме!; |