From c19bd17c03312bb020ee70f0f85440c36ea0a3e4 Mon Sep 17 00:00:00 2001 From: Ian Craggs Date: Wed, 18 Dec 2019 18:38:28 +0000 Subject: [PATCH] Fix for #754 - lock on socket mutex for getWrite --- src/MQTTClient.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/MQTTClient.c b/src/MQTTClient.c index ad419b66..76324160 100644 --- a/src/MQTTClient.c +++ b/src/MQTTClient.c @@ -2198,8 +2198,17 @@ MQTTResponse MQTTClient_publish5(MQTTClient handle, const char* topicName, int p */ if (rc == TCPSOCKET_INTERRUPTED) { - while (m->c->connected == 1 && SocketBuffer_getWrite(m->c->net.socket)) + while (m->c->connected == 1) { + pending_writes* writing = NULL; + + Thread_lock_mutex(socket_mutex); + writing = SocketBuffer_getWrite(m->c->net.socket); + Thread_unlock_mutex(socket_mutex); + + if (writing == NULL) + break; + Thread_unlock_mutex(mqttclient_mutex); MQTTClient_yield(); Thread_lock_mutex(mqttclient_mutex);