From c3fdc8c08c30c4f20f6374b0754ec9a2c8967a2b Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Sat, 16 Apr 2022 14:14:27 +0200 Subject: [PATCH] fix(zeromq): Leaking monitor socket messages --- fairmq/zeromq/Common.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/fairmq/zeromq/Common.h b/fairmq/zeromq/Common.h index 7bce2632..51d009b9 100644 --- a/fairmq/zeromq/Common.h +++ b/fairmq/zeromq/Common.h @@ -194,13 +194,16 @@ inline auto getMonitorEvent(void* monitorSocket) -> int // Second frame in message contains event address assertm(zmq_msg_more(&msg), "A second frame is pending"); // NOLINT - zmq_msg_init(&msg); + zmq_msg_close(&msg); + zmq_msg_t msg2; + zmq_msg_init(&msg2); { - [[maybe_unused]] auto const rc = zmq_msg_recv(&msg, monitorSocket, 0); + [[maybe_unused]] auto const rc = zmq_msg_recv(&msg2, monitorSocket, 0); assertm(rc >= 0, "second monitor event frame successfully received"); // NOLINT } - assertm(!zmq_msg_more(&msg), "No more frames are pending"); // NOLINT + assertm(!zmq_msg_more(&msg2), "No more frames are pending"); // NOLINT // No unpacking of the event address needed for now + zmq_msg_close(&msg2); return event; }