diff --git a/node/Multicaster.cpp b/node/Multicaster.cpp index 5583b65b0..34cbabe62 100644 --- a/node/Multicaster.cpp +++ b/node/Multicaster.cpp @@ -304,6 +304,7 @@ void Multicaster::send( // supernode. Our supernode then takes care of relaying it down to <1.0.0 // nodes. This code can go away (along with support for P5_MULTICAST_FRAME) // once there are no more such nodes on the network. +#if 0 { SharedPtr sn(RR->topology->getBestSupernode()); if (sn) { @@ -342,32 +343,31 @@ void Multicaster::send( sn->send(RR,outp.data(),outp.size(),now); } } +#endif } void Multicaster::clean(uint64_t now) { Mutex::Lock _l(_groups_m); for(std::map< std::pair,MulticastGroupStatus >::iterator mm(_groups.begin());mm!=_groups.end();) { - // Remove expired outgoing multicasts from multicast TX queue for(std::list::iterator tx(mm->second.txQueue.begin());tx!=mm->second.txQueue.end();) { if ((tx->expired(now))||(tx->atLimit())) mm->second.txQueue.erase(tx++); else ++tx; } - // Remove expired members from membership list, and update rank - // so that remaining members can be sorted in ascending order of - // transmit priority. - std::vector::iterator reader(mm->second.members.begin()); - std::vector::iterator writer(reader); - unsigned int count = 0; - while (reader != mm->second.members.end()) { - if ((now - reader->timestamp) < ZT_MULTICAST_LIKE_EXPIRE) { - *writer = *reader; - ++writer; - ++count; + unsigned long count = 0; + { + std::vector::iterator reader(mm->second.members.begin()); + std::vector::iterator writer(reader); + while (reader != mm->second.members.end()) { + if ((now - reader->timestamp) < ZT_MULTICAST_LIKE_EXPIRE) { + *writer = *reader; + ++writer; + ++count; + } + ++reader; } - ++reader; } if (count) { diff --git a/node/OutboundMulticast.hpp b/node/OutboundMulticast.hpp index f87656eb4..b3ca36a54 100644 --- a/node/OutboundMulticast.hpp +++ b/node/OutboundMulticast.hpp @@ -133,7 +133,7 @@ public: */ inline bool sendIfNew(const RuntimeEnvironment *RR,const Address &toAddr) { - for(std::vector
::iterator a(_alreadySentTo.begin());a!=_alreadySentTo.end();++a) { + for(std::vector
::const_iterator a(_alreadySentTo.begin());a!=_alreadySentTo.end();++a) { if (*a == toAddr) return false; }