mirror of
https://github.com/eledio-devices/thirdparty-AsyncTCPSock.git
synced 2025-10-30 16:15:40 +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