diff --git a/src/libs/gocmdbridge/client/cmdbridgeclient.cpp b/src/libs/gocmdbridge/client/cmdbridgeclient.cpp index 754aac2251c..51f75c43f8b 100644 --- a/src/libs/gocmdbridge/client/cmdbridgeclient.cpp +++ b/src/libs/gocmdbridge/client/cmdbridgeclient.cpp @@ -244,10 +244,8 @@ Client::Client(const Utils::FilePath &remoteCmdBridgePath) Client::~Client() { - if (d->thread->isRunning()) { - exit(); + if (d->thread->isRunning() && exit()) d->thread->wait(); - } } expected_str> Client::start() @@ -856,12 +854,14 @@ Utils::expected_str> 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; } } diff --git a/src/libs/gocmdbridge/client/cmdbridgeclient.h b/src/libs/gocmdbridge/client/cmdbridgeclient.h index 1d6556d3234..07302131878 100644 --- a/src/libs/gocmdbridge/client/cmdbridgeclient.h +++ b/src/libs/gocmdbridge/client/cmdbridgeclient.h @@ -113,7 +113,7 @@ public: Utils::expected_str> signalProcess(int pid, Utils::ControlSignal signal); protected: - void exit(); + bool exit(); signals: void done(const Utils::ProcessResultData &resultData);