diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-03-06 16:21:49 -0800 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-03-06 16:21:49 -0800 |
commit | 7ea7e1898a88ee60a346582fd6185e4f727759bf (patch) | |
tree | ac292dc348c3193e5e81fd2061e9bb6da9dcebfe /controller/EmbeddedNetworkController.cpp | |
parent | 5e6a4e5f5e0022dccbc2f6cf8a8b38c038720866 (diff) | |
download | infinitytier-7ea7e1898a88ee60a346582fd6185e4f727759bf.tar.gz infinitytier-7ea7e1898a88ee60a346582fd6185e4f727759bf.zip |
Fix a bug that could cause duplicate IP address assignment on networks if many new members join the controller at once.
Diffstat (limited to 'controller/EmbeddedNetworkController.cpp')
-rw-r--r-- | controller/EmbeddedNetworkController.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp index 2f6142a9..b731db83 100644 --- a/controller/EmbeddedNetworkController.cpp +++ b/controller/EmbeddedNetworkController.cpp @@ -664,6 +664,7 @@ unsigned int EmbeddedNetworkController::handleControlPlaneHttpPOST( // Member is being de-authorized, so spray Revocation objects to all online members if (!newAuth) { + _clearNetworkMemberInfoCache(nwid); Revocation rev(_node->prng(),nwid,0,now,ZT_REVOCATION_FLAG_FAST_PROPAGATE,Address(address),Revocation::CREDENTIAL_TYPE_COM); rev.sign(_signingId); Mutex::Lock _l(_lastRequestTime_m); @@ -1662,6 +1663,7 @@ void EmbeddedNetworkController::_request( if (nc.staticIpCount < ZT_MAX_ZT_ASSIGNED_ADDRESSES) nc.staticIps[nc.staticIpCount++] = ip6; haveManagedIpv6AutoAssignment = true; + _clearNetworkMemberInfoCache(nwid); // clear cache to prevent IP assignment duplication on many rapid assigns break; } } @@ -1717,6 +1719,7 @@ void EmbeddedNetworkController::_request( v4ip->sin_addr.s_addr = Utils::hton(ip); } haveManagedIpv4AutoAssignment = true; + _clearNetworkMemberInfoCache(nwid); // clear cache to prevent IP assignment duplication on many rapid assigns break; } } |