summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Borisov <borisov.alexandr@rambler.ru>2011-11-17 01:16:39 +0200
committerAlex Borisov <borisov.alexandr@rambler.ru>2011-11-17 01:16:39 +0200
commit3b45f27f389976718efaccdf71878e5455303da2 (patch)
tree4db4ee5720912375fb7b2287bb75a1b4a9a768ad
parentb068f321dd9c6077c590473c4f108be87e7eb99d (diff)
Subsequent config updates. FIX data parsing bug
-rw-r--r--client/Config.cpp12
-rw-r--r--client/Config.h3
-rw-r--r--client/UpdatedConfig.cpp13
-rw-r--r--client/config.cfg2
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=Привет маме!;