From 22d8aa4dc9e93634f0cc1eb2e13ebafa9e70ea30 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 29 Oct 2014 15:26:32 -0700 Subject: Moderate efficiency improvement on multicast gather result parsing, and go ahead and keep track of total known peers. --- node/IncomingPacket.cpp | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'node/IncomingPacket.cpp') diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index e2ff24e6..f720825b 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -892,20 +892,9 @@ void IncomingPacket::_sendErrorNeedCertificate(const RuntimeEnvironment *RR,cons void IncomingPacket::_parseGatherResults(const RuntimeEnvironment *RR,const SharedPtr &peer,uint64_t nwid,const MulticastGroup &mg,unsigned int offset) { - //unsigned int totalKnown = at(offset); + unsigned int totalKnown = at(offset); unsigned int count = at(offset + 4); - const unsigned char *p = (const unsigned char *)data() + offset + 6; - const unsigned char *e = (const unsigned char *)data() + size(); - Address atmp; - uint64_t now = Utils::now(); - for(unsigned int i=0;i e) - break; - atmp.setTo(p,ZT_ADDRESS_LENGTH); - RR->mc->add(now,nwid,mg,peer->address(),atmp); - p = n; - } + RR->mc->addMultiple(Utils::now(),nwid,mg,peer->address(),field(offset + 6,count * 5),count,totalKnown); } } // namespace ZeroTier -- cgit v1.2.3