From 0851ff104ad1b76d30650d81e686e6c10026d88b Mon Sep 17 00:00:00 2001
From: Tiejun Zhou <tizho@microsoft.com>
Date: Fri, 8 Mar 2024 03:21:58 +0000
Subject: [PATCH] Reduce the delay of ASYNC connection

---
 src/MQTTAsyncUtils.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/MQTTAsyncUtils.c b/src/MQTTAsyncUtils.c
index 6d9330403..a4da85737 100644
--- a/src/MQTTAsyncUtils.c
+++ b/src/MQTTAsyncUtils.c
@@ -1357,7 +1357,10 @@ static int MQTTAsync_processCommand(void)
 			make sure we check for writeability as well as readability, otherwise we wait around longer than we need to
 			in Socket_getReadySocket() */
 			if (rc == EINPROGRESS)
+			{
 				Socket_addPendingWrite(command->client->c->net.socket);
+				rc = MQTTAsync_connecting(command->client);
+			}
 		}
 	}
 	else if (command->command.type == SUBSCRIBE)
@@ -2031,7 +2034,7 @@ thread_return_type WINAPI MQTTAsync_receiveThread(void* n)
 
 		if (sock == 0)
 			continue;
-		timeout = 1000L;
+		timeout = 10L;
 
 		/* find client corresponding to socket */
 		if (ListFindItem(MQTTAsync_handles, &sock, clientSockCompare) == NULL)
@@ -3017,8 +3020,6 @@ static MQTTPacket* MQTTAsync_cycle(SOCKET* sock, unsigned long timeout, int* rc)
 		MQTTAsync_lock_mutex(mqttasync_mutex);
 		should_stop = MQTTAsync_tostop;
 		MQTTAsync_unlock_mutex(mqttasync_mutex);
-		if (!should_stop && *sock == 0 && (timeout > 0L))
-			MQTTAsync_sleep(100L);
 #if defined(OPENSSL)
 	}
 #endif
@@ -3032,7 +3033,7 @@ static MQTTPacket* MQTTAsync_cycle(SOCKET* sock, unsigned long timeout, int* rc)
 		{
 			Log(TRACE_MINIMUM, -1, "m->c->connect_state = %d", m->c->connect_state);
 			if (m->c->connect_state == TCP_IN_PROGRESS || m->c->connect_state == SSL_IN_PROGRESS || m->c->connect_state == WEBSOCKET_IN_PROGRESS)
-				*rc = MQTTAsync_connecting(m);
+				;
 			else
 				pack = MQTTPacket_Factory(m->c->MQTTVersion, &m->c->net, rc);
 			if (m->c->connect_state == WAIT_FOR_CONNACK && *rc == SOCKET_ERROR)