Skip to content

Commit 5aaece4

Browse files
committed
impr: avoid creating async rpc objects when not connected
fix: connection_id must be mutexd
1 parent fcc6893 commit 5aaece4

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

src/monitor.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,11 @@ class BridgeMonitor: public Stream {
136136

137137
k_mutex_lock(&monitor_mutex, K_FOREVER);
138138

139+
if (!_connected) return;
140+
139141
MsgPack::arr_t<uint8_t> message;
140142
RpcResult async_rpc = bridge->call(MON_READ_METHOD, size);
141-
const bool ret = _connected && async_rpc.result(message);
143+
const bool ret = async_rpc.result(message);
142144

143145
if (ret) {
144146
for (size_t i = 0; i < message.size(); ++i) {

src/tcp_client.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ class BridgeTCPClient : public Client {
109109
}
110110

111111
size_t written;
112+
k_mutex_lock(&client_mutex, K_FOREVER);
112113
const bool ok = bridge->call(TCP_WRITE_METHOD, connection_id, payload).result(written);
114+
k_mutex_unlock(&client_mutex);
113115
return ok? written : 0;
114116
}
115117

@@ -185,9 +187,11 @@ class BridgeTCPClient : public Client {
185187

186188
k_mutex_lock(&client_mutex, K_FOREVER);
187189

190+
if (!_connected) return;
191+
188192
MsgPack::arr_t<uint8_t> message;
189193
RpcResult async_rpc = bridge->call(TCP_READ_METHOD, connection_id, size);
190-
const bool ret = _connected && async_rpc.result(message);
194+
const bool ret = async_rpc.result(message);
191195

192196
if (ret) {
193197
for (size_t i = 0; i < message.size(); ++i) {

0 commit comments

Comments
 (0)