fix: ClientProxyUnknownFailure should also remove its client socket
This commit is contained in:
parent
220bf3178c
commit
d392547fd8
3 changed files with 15 additions and 0 deletions
|
|
@ -81,6 +81,11 @@ deskflow::IStream *StreamFilter::getStream() const
|
||||||
return m_stream;
|
return m_stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool StreamFilter::adoptedStream() const
|
||||||
|
{
|
||||||
|
return m_adopted;
|
||||||
|
}
|
||||||
|
|
||||||
void StreamFilter::filterEvent(const Event &event)
|
void StreamFilter::filterEvent(const Event &event)
|
||||||
{
|
{
|
||||||
m_events->dispatchEvent(Event(event.getType(), getEventTarget(), event.getData()));
|
m_events->dispatchEvent(Event(event.getType(), getEventTarget(), event.getData()));
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,8 @@ public:
|
||||||
*/
|
*/
|
||||||
deskflow::IStream *getStream() const;
|
deskflow::IStream *getStream() const;
|
||||||
|
|
||||||
|
bool adoptedStream() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Handle events from source stream
|
//! Handle events from source stream
|
||||||
/*!
|
/*!
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,15 @@ void ClientListener::handleClientAccepted(IDataSocket *socket)
|
||||||
handleUnknownClient(client);
|
handleUnknownClient(client);
|
||||||
});
|
});
|
||||||
m_events->addHandler(EventTypes::ClientProxyUnknownFailure, client, [this, client](const auto &) {
|
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);
|
removeUnknownClient(client);
|
||||||
|
if (socket) {
|
||||||
|
removeClientSocket(socket);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue