From abfcc59f22788e8a63076aed6ed9feb4c62acd88 Mon Sep 17 00:00:00 2001 From: Luiz Sardinha Date: Wed, 18 Mar 2026 23:56:13 +0100 Subject: [PATCH] fix: prevent daemon ipc client from sending multiple messages at the same time --- src/lib/gui/ipc/DaemonIpcClient.cpp | 3 +++ src/lib/gui/ipc/DaemonIpcClient.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/lib/gui/ipc/DaemonIpcClient.cpp b/src/lib/gui/ipc/DaemonIpcClient.cpp index 98b734156..2b00c68bd 100644 --- a/src/lib/gui/ipc/DaemonIpcClient.cpp +++ b/src/lib/gui/ipc/DaemonIpcClient.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include @@ -79,6 +80,7 @@ bool DaemonIpcClient::connectToServer() void DaemonIpcClient::disconnectFromServer() { + QMutexLocker locker(&m_mutex); m_state = State::Disconnecting; qDebug() << "daemon ipc client disconnecting from server"; m_socket->disconnectFromServer(); @@ -116,6 +118,7 @@ void DaemonIpcClient::handleErrorOccurred() bool DaemonIpcClient::sendMessage(const QString &message, const QString &expectAck, const bool expectConnected) { + QMutexLocker locker(&m_mutex); if (expectConnected && !isConnected()) { qWarning() << "cannot send command, ipc client not connected"; return false; diff --git a/src/lib/gui/ipc/DaemonIpcClient.h b/src/lib/gui/ipc/DaemonIpcClient.h index d5e4ee0f6..d5cd5ea0e 100644 --- a/src/lib/gui/ipc/DaemonIpcClient.h +++ b/src/lib/gui/ipc/DaemonIpcClient.h @@ -6,6 +6,7 @@ #pragma once +#include #include class QLocalSocket; @@ -54,6 +55,7 @@ private: private: QLocalSocket *m_socket; + QMutex m_mutex; State m_state{State::Unconnected}; };