diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-06-05 12:15:28 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-06-05 12:15:28 -0700 |
| commit | 9b287392a4af95ee0d15db7e3d1f9dd6bd804060 (patch) | |
| tree | c7bf3bb3c37e6c5ff4545e0249d3e089ae2d96fc /node/Network.cpp | |
| parent | aa06470cb6e779563e6c21e1166c36e30a2138ce (diff) | |
| download | infinitytier-9b287392a4af95ee0d15db7e3d1f9dd6bd804060.tar.gz infinitytier-9b287392a4af95ee0d15db7e3d1f9dd6bd804060.zip | |
.
Diffstat (limited to 'node/Network.cpp')
| -rw-r--r-- | node/Network.cpp | 21 |
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) { |
