From d392547fd8583ac76cfa4fa768589b4d5591c671 Mon Sep 17 00:00:00 2001 From: Luiz Sardinha Date: Wed, 25 Feb 2026 17:51:26 +0100 Subject: [PATCH] fix: ClientProxyUnknownFailure should also remove its client socket --- src/lib/io/StreamFilter.cpp | 5 +++++ src/lib/io/StreamFilter.h | 2 ++ src/lib/server/ClientListener.cpp | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/src/lib/io/StreamFilter.cpp b/src/lib/io/StreamFilter.cpp index 5e50a85b5..81b6a4ef2 100644 --- a/src/lib/io/StreamFilter.cpp +++ b/src/lib/io/StreamFilter.cpp @@ -81,6 +81,11 @@ deskflow::IStream *StreamFilter::getStream() const return m_stream; } +bool StreamFilter::adoptedStream() const +{ + return m_adopted; +} + void StreamFilter::filterEvent(const Event &event) { m_events->dispatchEvent(Event(event.getType(), getEventTarget(), event.getData())); diff --git a/src/lib/io/StreamFilter.h b/src/lib/io/StreamFilter.h index b7afe17bf..1a3ed724f 100644 --- a/src/lib/io/StreamFilter.h +++ b/src/lib/io/StreamFilter.h @@ -51,6 +51,8 @@ public: */ deskflow::IStream *getStream() const; + bool adoptedStream() const; + protected: //! Handle events from source stream /*! diff --git a/src/lib/server/ClientListener.cpp b/src/lib/server/ClientListener.cpp index 583c1c351..679ed9f26 100644 --- a/src/lib/server/ClientListener.cpp +++ b/src/lib/server/ClientListener.cpp @@ -171,7 +171,15 @@ void ClientListener::handleClientAccepted(IDataSocket *socket) handleUnknownClient(client); }); m_events->addHandler(EventTypes::ClientProxyUnknownFailure, client, [this, client](const auto &) { + auto *filter = dynamic_cast(client->getStream()); + IDataSocket *socket = nullptr; + if (filter && !filter->adoptedStream()) { + socket = dynamic_cast(filter->getStream()); + } removeUnknownClient(client); + if (socket) { + removeClientSocket(socket); + } }); }