More stack->heap...

This commit is contained in:
Adam Ierymenko 2019-06-17 14:55:33 -07:00
parent 2dc783214c
commit aa831dd843

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