try fixing leak

pull/898/head
Jeff Becker 5 years ago
parent 67da33a221
commit 89e5b6b4cc
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -839,8 +839,10 @@ struct PacketBuffer
{
_ptr = new char[sz];
}
PacketBuffer(char* buf, size_t sz) : _ptr{buf}, _sz{sz}
PacketBuffer(char* buf, size_t sz)
{
_ptr = buf;
_sz = sz;
}
~PacketBuffer()
{

@ -469,7 +469,8 @@ namespace libuv
udp_glue* glue = static_cast< udp_glue* >(handle->data);
if(addr)
glue->RecvFrom(nread, buf, addr);
if(glue->m_UDP == nullptr || glue->m_UDP->recvfrom != nullptr)
if(nread == 0 || glue->m_UDP == nullptr
|| glue->m_UDP->recvfrom != nullptr)
delete[] buf->base;
}
@ -487,13 +488,15 @@ namespace libuv
if(sz > 0 && m_UDP)
{
const size_t pktsz = sz;
const llarp_buffer_t pkt{(const byte_t*)buf->base, pktsz};
if(m_UDP->recvfrom)
{
const llarp_buffer_t pkt((const byte_t*)buf->base, pktsz);
m_UDP->recvfrom(m_UDP, fromaddr, ManagedBuffer{pkt});
}
else
{
m_LastPackets.emplace_back(
PacketEvent{llarp::Addr(*fromaddr), PacketBuffer(buf->base, sz)});
PacketBuffer pbuf(buf->base, pktsz);
m_LastPackets.emplace_back(PacketEvent{*fromaddr, std::move(pbuf)});
}
}
}

Loading…
Cancel
Save