fix: ClientProxyUnknownFailure should also remove its client socket

This commit is contained in:
Luiz Sardinha
2026-02-25 17:51:26 +01:00
committed by Nick Bolton
parent 220bf3178c
commit d392547fd8
3 changed files with 15 additions and 0 deletions

View File

@ -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()));

View File

@ -51,6 +51,8 @@ public:
*/
deskflow::IStream *getStream() const;
bool adoptedStream() const;
protected:
//! Handle events from source stream
/*!

View File

@ -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<StreamFilter *>(client->getStream());
IDataSocket *socket = nullptr;
if (filter && !filter->adoptedStream()) {
socket = dynamic_cast<IDataSocket *>(filter->getStream());
}
removeUnknownClient(client);
if (socket) {
removeClientSocket(socket);
}
});
}