Browse Source

Supernode propagation of legacy multicast frames was brokezored.

Adam Ierymenko 10 years ago
parent
commit
620e64c58f
1 changed files with 4 additions and 2 deletions
  1. 4 2
      node/IncomingPacket.cpp

+ 4 - 2
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));
 			std::vector<Address> legacyPeers(RR->mc->getLegacySubscribers(nwid,dest));
 
 
 			setAt(ZT_PROTO_VERB_P5_MULTICAST_FRAME_IDX_PROPAGATION_DEPTH,(uint16_t)0xffff);
 			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) {
 			for(std::vector<Address>::iterator lp(legacyPeers.begin());lp!=legacyPeers.end();++lp) {
 				if ((*lp != origin)&&(*lp != source())) {
 				if ((*lp != origin)&&(*lp != source())) {
 					newInitializationVector();
 					newInitializationVector();
 					setDestination(*lp);
 					setDestination(*lp);
-					setSource(RR->identity.address());
-					compress();
 					RR->sw->send(*this,true);
 					RR->sw->send(*this,true);
 				}
 				}
 			}
 			}
+
+			return true;
 		} else {
 		} else {
 			SharedPtr<Network> network(RR->nc->network(nwid)); // will be NULL if not a member
 			SharedPtr<Network> network(RR->nc->network(nwid)); // will be NULL if not a member
 			if (network) {
 			if (network) {