diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-10-09 09:02:46 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-10-09 09:03:12 -0700 |
commit | 620e64c58f1332d6b9948108dcd1ebf99223074d (patch) | |
tree | f4fde527aca8e3c93e657b261ee87aefe2f58a26 /node | |
parent | b809dad94aeb59d591745034b86b273633aaf925 (diff) | |
download | infinitytier-620e64c58f1332d6b9948108dcd1ebf99223074d.tar.gz infinitytier-620e64c58f1332d6b9948108dcd1ebf99223074d.zip |
Supernode propagation of legacy multicast frames was brokezored.
Diffstat (limited to 'node')
-rw-r--r-- | node/IncomingPacket.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 4f449d3e..80988130 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -584,16 +584,18 @@ bool IncomingPacket::_doP5_MULTICAST_FRAME(const RuntimeEnvironment *RR,const Sh std::vector<Address> legacyPeers(RR->mc->getLegacySubscribers(nwid,dest)); setAt(ZT_PROTO_VERB_P5_MULTICAST_FRAME_IDX_PROPAGATION_DEPTH,(uint16_t)0xffff); + setSource(RR->identity.address()); + compress(); for(std::vector<Address>::iterator lp(legacyPeers.begin());lp!=legacyPeers.end();++lp) { if ((*lp != origin)&&(*lp != source())) { newInitializationVector(); setDestination(*lp); - setSource(RR->identity.address()); - compress(); RR->sw->send(*this,true); } } + + return true; } else { SharedPtr<Network> network(RR->nc->network(nwid)); // will be NULL if not a member if (network) { |