diff options
-rw-r--r-- | controller/SqliteNetworkController.cpp | 11 | ||||
-rw-r--r-- | controller/SqliteNetworkController.hpp | 1 |
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; |