From 5aaece43081813bb088c3aa7c4675c9c941f1999 Mon Sep 17 00:00:00 2001 From: Lucio Rossi Date: Fri, 14 Nov 2025 17:00:02 +0100 Subject: [PATCH] impr: avoid creating async rpc objects when not connected fix: connection_id must be mutexd --- src/monitor.h | 4 +++- src/tcp_client.h | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/monitor.h b/src/monitor.h index 94fc551..870657d 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -136,9 +136,11 @@ class BridgeMonitor: public Stream { k_mutex_lock(&monitor_mutex, K_FOREVER); + if (!_connected) return; + MsgPack::arr_t message; RpcResult async_rpc = bridge->call(MON_READ_METHOD, size); - const bool ret = _connected && async_rpc.result(message); + const bool ret = async_rpc.result(message); if (ret) { for (size_t i = 0; i < message.size(); ++i) { diff --git a/src/tcp_client.h b/src/tcp_client.h index 8d00d0b..a8fef79 100644 --- a/src/tcp_client.h +++ b/src/tcp_client.h @@ -109,7 +109,9 @@ class BridgeTCPClient : public Client { } size_t written; + k_mutex_lock(&client_mutex, K_FOREVER); const bool ok = bridge->call(TCP_WRITE_METHOD, connection_id, payload).result(written); + k_mutex_unlock(&client_mutex); return ok? written : 0; } @@ -185,9 +187,11 @@ class BridgeTCPClient : public Client { k_mutex_lock(&client_mutex, K_FOREVER); + if (!_connected) return; + MsgPack::arr_t message; RpcResult async_rpc = bridge->call(TCP_READ_METHOD, connection_id, size); - const bool ret = _connected && async_rpc.result(message); + const bool ret = async_rpc.result(message); if (ret) { for (size_t i = 0; i < message.size(); ++i) {