summaryrefslogtreecommitdiff
path: root/node/Network.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-06-05 12:15:28 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-06-05 12:15:28 -0700
commit9b287392a4af95ee0d15db7e3d1f9dd6bd804060 (patch)
treec7bf3bb3c37e6c5ff4545e0249d3e089ae2d96fc /node/Network.cpp
parentaa06470cb6e779563e6c21e1166c36e30a2138ce (diff)
downloadinfinitytier-9b287392a4af95ee0d15db7e3d1f9dd6bd804060.tar.gz
infinitytier-9b287392a4af95ee0d15db7e3d1f9dd6bd804060.zip
.
Diffstat (limited to 'node/Network.cpp')
-rw-r--r--node/Network.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/node/Network.cpp b/node/Network.cpp
index 6dfb0b92..74d81941 100644
--- a/node/Network.cpp
+++ b/node/Network.cpp
@@ -701,7 +701,26 @@ Network::Network(const RuntimeEnvironment *renv,void *tPtr,uint64_t nwid,void *u
this->setConfiguration(tPtr,*nconf,false);
_lastConfigUpdate = 0; // still want to re-request since it's likely outdated
} else {
- RR->node->stateObjectPut(tPtr,ZT_STATE_OBJECT_NETWORK_CONFIG,nwid,"\n",1);
+ bool got = false;
+ Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY> *dict = new Dictionary<ZT_NETWORKCONFIG_DICT_CAPACITY>();
+ try {
+ int n = RR->node->stateObjectGet(tPtr,ZT_STATE_OBJECT_NETWORK_CONFIG,nwid,dict->unsafeData(),ZT_NETWORKCONFIG_DICT_CAPACITY - 1);
+ if (n > 1) {
+ NetworkConfig *nconf = new NetworkConfig();
+ try {
+ if (nconf->fromDictionary(*dict)) {
+ this->setConfiguration(tPtr,*nconf,false);
+ _lastConfigUpdate = 0; // still want to re-request an update since it's likely outdated
+ got = true;
+ }
+ } catch ( ... ) {}
+ delete nconf;
+ }
+ } catch ( ... ) {}
+ delete dict;
+
+ if (!got)
+ RR->node->stateObjectPut(tPtr,ZT_STATE_OBJECT_NETWORK_CONFIG,nwid,"\n",1);
}
if (!_portInitialized) {