From 08c6e5fc49451d47edc5b178afaf2c9c153337bc Mon Sep 17 00:00:00 2001 From: Alex Robenko Date: Sun, 9 Jul 2023 21:54:23 +1000 Subject: [PATCH] Fixing mulitple sends of the DISCONNECT message to the client. --- gateway/src/lib/session_op/PubSend.cpp | 5 ++++- gateway/src/lib/session_op/PubSend.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gateway/src/lib/session_op/PubSend.cpp b/gateway/src/lib/session_op/PubSend.cpp index 21279d3..45ca23a 100644 --- a/gateway/src/lib/session_op/PubSend.cpp +++ b/gateway/src/lib/session_op/PubSend.cpp @@ -162,7 +162,10 @@ void PubSend::newSends() } if (st.m_pendingClientDisconnect) { - sendDisconnect(); + if (!m_disconnectAlreadySent) { + sendDisconnect(); + m_disconnectAlreadySent = true; + } return; } diff --git a/gateway/src/lib/session_op/PubSend.h b/gateway/src/lib/session_op/PubSend.h index 1dfcc64..57cb722 100644 --- a/gateway/src/lib/session_op/PubSend.h +++ b/gateway/src/lib/session_op/PubSend.h @@ -57,6 +57,7 @@ class PubSend : public SessionOp bool m_registered = false; bool m_acked = false; bool m_ping = false; + bool m_disconnectAlreadySent = false; }; } // namespace session_op