CmdBridge: Act on exceptions in Client::exit()

Change-Id: I93b82d2e559366b67e7a9069fd3ff371d37988ad
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
Christian Kandeler
2024-12-12 17:13:46 +01:00
parent a221ce82ce
commit fabcf85508
2 changed files with 6 additions and 6 deletions

View File

@@ -244,11 +244,9 @@ Client::Client(const Utils::FilePath &remoteCmdBridgePath)
Client::~Client()
{
if (d->thread->isRunning()) {
exit();
if (d->thread->isRunning() && exit())
d->thread->wait();
}
}
expected_str<QFuture<Environment>> Client::start()
{
@@ -856,12 +854,14 @@ Utils::expected_str<QFuture<void>> Client::signalProcess(int pid, Utils::Control
"signalsuccess");
}
void Client::exit()
bool Client::exit()
{
try {
createVoidJob(d.get(), QCborMap{{"Type", "exit"}}, "exitres")->waitForFinished();
return true;
} catch (...) {
return;
qCWarning(clientLog) << "Client::exit() caught exception";
return false;
}
}

View File

@@ -113,7 +113,7 @@ public:
Utils::expected_str<QFuture<void>> signalProcess(int pid, Utils::ControlSignal signal);
protected:
void exit();
bool exit();
signals:
void done(const Utils::ProcessResultData &resultData);