fix: ClientProxyUnknownFailure should also remove its client socket
This commit is contained in:
committed by
Nick Bolton
parent
220bf3178c
commit
d392547fd8
@ -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()));
|
||||
|
||||
@ -51,6 +51,8 @@ public:
|
||||
*/
|
||||
deskflow::IStream *getStream() const;
|
||||
|
||||
bool adoptedStream() const;
|
||||
|
||||
protected:
|
||||
//! Handle events from source stream
|
||||
/*!
|
||||
|
||||
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user