mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-09 04:04:13 +00:00
Prevent "software laser" in legacy multicast support. Already hotpatched in supernodes.
This commit is contained in:
parent
b1b37d9d72
commit
c61e9c0ef9
@ -611,14 +611,14 @@ bool IncomingPacket::_doP5_MULTICAST_FRAME(const RuntimeEnvironment *RR,const Sh
|
||||
|
||||
std::vector<Address> members(RR->mc->getMembers(nwid,dest,limit));
|
||||
SharedPtr<Peer> lpp;
|
||||
uint64_t now = Utils::now();
|
||||
|
||||
setAt(ZT_PROTO_VERB_P5_MULTICAST_FRAME_IDX_PROPAGATION_DEPTH,(uint16_t)0xffff);
|
||||
setSource(RR->identity.address());
|
||||
compress();
|
||||
for(std::vector<Address>::iterator lp(members.begin());lp!=members.end();++lp) {
|
||||
if (!senderIsLegacy)
|
||||
lpp = RR->topology->getPeer(*lp);
|
||||
if ( (*lp != origin) && (*lp != peer->address()) && ((senderIsLegacy) || (!lpp) || (lpp->remoteVersionMajor() < 1)) ) {
|
||||
lpp = RR->topology->getPeer(*lp);
|
||||
if ( (lpp) && (lpp->hasActiveDirectPath(now)) && (*lp != origin) && (*lp != peer->address()) && ((senderIsLegacy) || (lpp->remoteVersionMajor() < 1)) ) {
|
||||
newInitializationVector();
|
||||
setDestination(*lp);
|
||||
RR->sw->send(*this,true);
|
||||
|
Loading…
x
Reference in New Issue
Block a user