From 0506ca8bdf8584858c0e462a24712c651a7e4e59 Mon Sep 17 00:00:00 2001 From: Trumeet Date: Thu, 28 Jul 2022 15:38:34 -0700 Subject: fix(libacron): memory leak when received more than one frames API:CHANGE --- client/acronc/handler_socket.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'client/acronc') diff --git a/client/acronc/handler_socket.c b/client/acronc/handler_socket.c index efed127..2dfda5e 100644 --- a/client/acronc/handler_socket.c +++ b/client/acronc/handler_socket.c @@ -156,6 +156,26 @@ static void on_read(uv_stream_t *tcp, ssize_t nread, const uv_buf_t *buf) { /* acronc error. Socket is working. */ ex(false); } + + LOGD("Clearing backlog."); + while (true) { + if ((r = ac_receive(ac_conn, NULL, 0, &obj))) { + LOGEV("Cannot clear backlog (%d).", r); + /* libac error. Socket is working. */ + free(buf->base); + ex(false); + return; + } + if (!obj) { + break; + } + if (cb_recv(obj)) { + /* acronc error. Socket is working. */ + ex(false); + free(buf->base); + return; + } + } } free(buf->base); -- cgit v1.2.3