From 4e95384ad60c853f01c50e233b8cb48f239f033f Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 5 Jan 2015 17:47:59 -0800 Subject: Cleanup, add tristate to config code in Network, and happy new year! --- node/Network.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'node/Network.cpp') 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 &conf) return false; } -bool Network::setConfiguration(const Dictionary &conf,bool saveToDisk) +int Network::setConfiguration(const Dictionary &conf,bool saveToDisk) { try { SharedPtr 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() -- cgit v1.2.3