Browse Source

More stack->heap...

Adam Ierymenko 6 years ago
parent
commit
aa831dd843
1 changed files with 13 additions and 11 deletions
  1. 13 11
      node/Network.cpp

+ 13 - 11
node/Network.cpp

@@ -1493,25 +1493,27 @@ void Network::_sendUpdatesToMembers(void *tPtr,const MulticastGroup *const newMu
 void Network::_announceMulticastGroupsTo(void *tPtr,const Address &peer,const std::vector<MulticastGroup> &allMulticastGroups)
 {
 	// Assumes _lock is locked
-	Packet outp(peer,RR->identity.address(),Packet::VERB_MULTICAST_LIKE);
+	Packet *const outp = new Packet(peer,RR->identity.address(),Packet::VERB_MULTICAST_LIKE);
 
 	for(std::vector<MulticastGroup>::const_iterator mg(allMulticastGroups.begin());mg!=allMulticastGroups.end();++mg) {
-		if ((outp.size() + 24) >= ZT_PROTO_MAX_PACKET_LENGTH) {
-			outp.compress();
-			RR->sw->send(tPtr,outp,true);
-			outp.reset(peer,RR->identity.address(),Packet::VERB_MULTICAST_LIKE);
+		if ((outp->size() + 24) >= ZT_PROTO_MAX_PACKET_LENGTH) {
+			outp->compress();
+			RR->sw->send(tPtr,*outp,true);
+			outp->reset(peer,RR->identity.address(),Packet::VERB_MULTICAST_LIKE);
 		}
 
 		// network ID, MAC, ADI
-		outp.append((uint64_t)_id);
-		mg->mac().appendTo(outp);
-		outp.append((uint32_t)mg->adi());
+		outp->append((uint64_t)_id);
+		mg->mac().appendTo(*outp);
+		outp->append((uint32_t)mg->adi());
 	}
 
-	if (outp.size() > ZT_PROTO_MIN_PACKET_LENGTH) {
-		outp.compress();
-		RR->sw->send(tPtr,outp,true);
+	if (outp->size() > ZT_PROTO_MIN_PACKET_LENGTH) {
+		outp->compress();
+		RR->sw->send(tPtr,*outp,true);
 	}
+
+	delete outp;
 }
 
 std::vector<MulticastGroup> Network::_allMulticastGroups() const