diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-10-24 16:57:26 -0400 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-10-24 16:57:26 -0400 |
| commit | 5901972958d6ef50671b7bbb89d2b365e4baf17c (patch) | |
| tree | a614ed5c2d685131ea45e57a89c0cd08dbe0db2e /node/Network.hpp | |
| parent | bbcd76ecd0c66adf73d32e2a7ab152a85af9879c (diff) | |
| download | infinitytier-5901972958d6ef50671b7bbb89d2b365e4baf17c.tar.gz infinitytier-5901972958d6ef50671b7bbb89d2b365e4baf17c.zip | |
More tying up of certificate of membership stuff in the client.
Diffstat (limited to 'node/Network.hpp')
| -rw-r--r-- | node/Network.hpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/node/Network.hpp b/node/Network.hpp index 1b74a048..ecee77c1 100644 --- a/node/Network.hpp +++ b/node/Network.hpp @@ -203,7 +203,7 @@ public: inline void pushMembershipCertificate(const Address &peer,bool force,uint64_t now) { Mutex::Lock _l(_lock); - if ((_config)&&(!_config->isOpen())) + if ((_config)&&(!_config->isOpen())&&(_config->com())) _pushMembershipCertificate(peer,force,now); } @@ -214,15 +214,17 @@ public: * len is reached or a null address is encountered. * * @param peers Packed array of 5-byte big-endian addresses - * @param len Length of peers[] in total, MUST be a multiple of 5 + * @param len Length of peers[] in total (bytes, not addresses) * @param force If true, push even if we've already done so within required time frame * @param now Current time */ inline void pushMembershipCertificate(const void *peers,unsigned int len,bool force,uint64_t now) { Mutex::Lock _l(_lock); - if ((_config)&&(!_config->isOpen())) { + if ((_config)&&(!_config->isOpen())&&(_config->com())) { for(unsigned int i=0;i<len;i+=ZT_ADDRESS_LENGTH) { + if ((i + ZT_ADDRESS_LENGTH) > len) + break; Address a((char *)peers + i,ZT_ADDRESS_LENGTH); if (a) _pushMembershipCertificate(a,force,now); |
