From 80268ea56a0ade86384d3079f31239b9be7c58bb Mon Sep 17 00:00:00 2001 From: geeksville Date: Sat, 2 May 2020 19:51:55 -0700 Subject: [PATCH] send() is supposed to always free buffers, even if it returns an error --- src/mesh/Router.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mesh/Router.cpp b/src/mesh/Router.cpp index 4790ff17e..b5a34a801 100644 --- a/src/mesh/Router.cpp +++ b/src/mesh/Router.cpp @@ -44,7 +44,7 @@ void Router::loop() /** * Send a packet on a suitable interface. This routine will * later free() the packet to pool. This routine is not allowed to stall. - * If the txmit queue is full it might return an error + * If the txmit queue is full it might return an error. */ ErrorCode Router::send(MeshPacket *p) { @@ -53,6 +53,7 @@ ErrorCode Router::send(MeshPacket *p) return iface->send(p); } else { DEBUG_MSG("Dropping packet - no interfaces - fr=0x%x,to=0x%x,id=%d\n", p->from, p->to, p->id); + packetPool.release(p); return ERRNO_NO_INTERFACES; } }