mirror of
				https://github.com/eledio-devices/thirdparty-AsyncTCPSock.git
				synced 2025-10-31 16:14:15 +01:00 
			
		
		
		
	Prevent spurious RX timeout/close on incoming socket object
When accepting a socket from an incoming connection, the internal fd was assigned without updating the field for last RX activity. If the remote side did *not* immediately write to the connection, or otherwise the socket could not be internally checked for incoming data, AND the higher-level code set up a RX timeout value, the 125-ms interval polling might evaluate the socket RX timeout condition with a last RX activity timestamp of zero (as per the default constructor). This caused a spurious RX timeout and incorrect socket closing. Fixed by initializing the field when the new incoming connection socket is accepted.
This commit is contained in:
		| @@ -307,6 +307,7 @@ AsyncClient::AsyncClient(int sockfd) | ||||
|         xSemaphoreTakeRecursive(_asyncsock_mutex, (TickType_t)portMAX_DELAY); | ||||
|         _conn_state = 4; | ||||
|         _socket = sockfd; | ||||
|         _rx_last_packet = millis(); | ||||
|         xSemaphoreGiveRecursive(_asyncsock_mutex); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user