mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-02-25 11:12:23 +00:00
More stack->heap...
This commit is contained in:
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user