summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--controller/SqliteNetworkController.cpp11
-rw-r--r--controller/SqliteNetworkController.hpp1
2 files changed, 11 insertions, 1 deletions
diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp
index 0cce7d9d..14374eff 100644
--- a/controller/SqliteNetworkController.cpp
+++ b/controller/SqliteNetworkController.cpp
@@ -159,6 +159,7 @@ struct NetworkRecord {
SqliteNetworkController::SqliteNetworkController(Node *node,const char *dbPath,const char *circuitTestPath) :
_node(node),
_backupThreadRun(true),
+ _backupNeeded(true),
_dbPath(dbPath),
_circuitTestPath(circuitTestPath),
_db((sqlite3 *)0)
@@ -445,6 +446,8 @@ unsigned int SqliteNetworkController::handleControlPlaneHttpPOST(
return 404;
Mutex::Lock _l(_lock);
+ _backupNeeded = true;
+
if (path[0] == "network") {
if ((path.size() >= 2)&&(path[1].length() == 16)) {
@@ -1042,6 +1045,8 @@ unsigned int SqliteNetworkController::handleControlPlaneHttpDELETE(
return 404;
Mutex::Lock _l(_lock);
+ _backupNeeded = true;
+
if (path[0] == "network") {
if ((path.size() >= 2)&&(path[1].length() == 16)) {
@@ -1126,7 +1131,7 @@ void SqliteNetworkController::threadMain()
}
}
- if ((OSUtils::now() - lastBackupTime) >= ZT_NETCONF_BACKUP_PERIOD) {
+ if (((OSUtils::now() - lastBackupTime) >= ZT_NETCONF_BACKUP_PERIOD)&&(_backupNeeded)) {
lastBackupTime = OSUtils::now();
char backupPath[4096],backupPath2[4096];
@@ -1169,6 +1174,8 @@ void SqliteNetworkController::threadMain()
OSUtils::rm(backupPath2);
::rename(backupPath,backupPath2);
+
+ _backupNeeded = false;
}
Thread::sleep(250);
@@ -1634,6 +1641,8 @@ NetworkController::ResultCode SqliteNetworkController::_doNetworkConfigRequest(c
lrt = now;
}
+ _backupNeeded = true;
+
NetworkRecord network;
memset(&network,0,sizeof(network));
Utils::snprintf(network.id,sizeof(network.id),"%.16llx",(unsigned long long)nwid);
diff --git a/controller/SqliteNetworkController.hpp b/controller/SqliteNetworkController.hpp
index 02aeec10..e3d5d62c 100644
--- a/controller/SqliteNetworkController.hpp
+++ b/controller/SqliteNetworkController.hpp
@@ -121,6 +121,7 @@ private:
Node *_node;
Thread _backupThread;
volatile bool _backupThreadRun;
+ volatile bool _backupNeeded;
std::string _dbPath;
std::string _circuitTestPath;
std::string _instanceId;