1
1
Fork 0
mirror of https://github.com/oxen-io/lokinet synced 2023-12-14 06:53:00 +01:00

try fixing leak

This commit is contained in:
Jeff Becker 2019-11-03 14:38:34 -05:00
parent 67da33a221
commit 89e5b6b4cc
No known key found for this signature in database
GPG key ID: F357B3B42F6F9B05
2 changed files with 10 additions and 5 deletions

View file

@ -839,8 +839,10 @@ struct PacketBuffer
{ {
_ptr = new char[sz]; _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() ~PacketBuffer()
{ {

View file

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