mirror of
				https://github.com/eledio-devices/thirdparty-AsyncTCPSock.git
				synced 2025-10-31 00:32:37 +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); |         xSemaphoreTakeRecursive(_asyncsock_mutex, (TickType_t)portMAX_DELAY); | ||||||
|         _conn_state = 4; |         _conn_state = 4; | ||||||
|         _socket = sockfd; |         _socket = sockfd; | ||||||
|  |         _rx_last_packet = millis(); | ||||||
|         xSemaphoreGiveRecursive(_asyncsock_mutex); |         xSemaphoreGiveRecursive(_asyncsock_mutex); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user