diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-01-05 17:47:59 -0800 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-01-05 17:47:59 -0800 |
| commit | 4e95384ad60c853f01c50e233b8cb48f239f033f (patch) | |
| tree | 1dccba67dffcc031462d64806fc8abbeb9989fc0 /node/Network.cpp | |
| parent | 08ba2ff752e78571b54c0500e8ee53f721500048 (diff) | |
| download | infinitytier-4e95384ad60c853f01c50e233b8cb48f239f033f.tar.gz infinitytier-4e95384ad60c853f01c50e233b8cb48f239f033f.zip | |
Cleanup, add tristate to config code in Network, and happy new year!
Diffstat (limited to 'node/Network.cpp')
| -rw-r--r-- | node/Network.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/node/Network.cpp b/node/Network.cpp index ed2d13ba..218e8615 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -1,6 +1,6 @@ /* * ZeroTier One - Global Peer to Peer Ethernet - * Copyright (C) 2011-2014 ZeroTier Networks LLC + * Copyright (C) 2011-2015 ZeroTier Networks * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -267,10 +267,15 @@ bool Network::applyConfiguration(const SharedPtr<NetworkConfig> &conf) return false; } -bool Network::setConfiguration(const Dictionary &conf,bool saveToDisk) +int Network::setConfiguration(const Dictionary &conf,bool saveToDisk) { try { SharedPtr<NetworkConfig> newConfig(new NetworkConfig(conf)); // throws if invalid + { + Mutex::Lock _l(_lock); + if ((_config)&&(*_config == *newConfig)) + return 1; // OK but duplicate + } if (applyConfiguration(newConfig)) { if (saveToDisk) { std::string confPath(RR->homePath + ZT_PATH_SEPARATOR_S + "networks.d" + ZT_PATH_SEPARATOR_S + idString() + ".conf"); @@ -280,12 +285,12 @@ bool Network::setConfiguration(const Dictionary &conf,bool saveToDisk) Utils::lockDownFile(confPath.c_str(),false); } } - return true; + return 2; // OK and configuration has changed } } catch ( ... ) { LOG("ignored invalid configuration for network %.16llx (dictionary decode failed)",(unsigned long long)_id); } - return false; + return 0; } void Network::requestConfiguration() |
