|  | @@ -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
 |