Fix for #754 - lock on socket mutex for getWrite

This commit is contained in:
Ian Craggs 2019-12-18 18:38:28 +00:00
parent d9583e48fc
commit c19bd17c03
1 changed files with 10 additions and 1 deletions

View File

@ -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);