소스 검색

Check Network::isAllowed() always on multicast send.

Adam Ierymenko 10 년 전
부모
커밋
1632aec102
1개의 변경된 파일8개의 추가작업 그리고 1개의 파일을 삭제
  1. 8 1
      node/OutboundMulticast.cpp

+ 8 - 1
node/OutboundMulticast.cpp

@@ -102,8 +102,14 @@ void OutboundMulticast::init(
 
 void OutboundMulticast::sendOnly(const RuntimeEnvironment *RR,const Address &toAddr)
 {
+	SharedPtr<Network> network(RR->node->network(_nwid));
+
+	if (!network)
+		return;
+	if (!network->isAllowed(toAddr))
+		return;
+
 	if (_haveCom) {
-		SharedPtr<Network> network(RR->node->network(_nwid));
 		if (network->peerNeedsOurMembershipCertificate(toAddr,RR->node->now())) {
 			_packetWithCom.newInitializationVector();
 			_packetWithCom.setDestination(toAddr);
@@ -112,6 +118,7 @@ void OutboundMulticast::sendOnly(const RuntimeEnvironment *RR,const Address &toA
 			return;
 		}
 	}
+
 	//TRACE(">>MC %.16llx -> %s (without COM)",(unsigned long long)this,toAddr.toString().c_str());
 	_packetNoCom.newInitializationVector();
 	_packetNoCom.setDestination(toAddr);