mirror of
https://github.com/apache/nuttx.git
synced 2026-05-30 05:16:47 +08:00
net/tcp: Fix TCP keepalive time unit misuse problem
Summary: The conn->keeptimer units is decisecond,but its unit is treated as half-second in the tcp_timer & tcp_get_timeout function. Therefore conn>keeptimer needs to be divided by 5(DSEC_PER_HSEC) to match half-second units. Signed-off-by: zhangshuai39 <zhangshuai39@xiaomi.com>
This commit is contained in:
committed by
Alan C. Assis
parent
efdb4322fc
commit
5e74ed8d34
+9
-5
@@ -107,11 +107,15 @@ static int tcp_get_timeout(FAR struct tcp_conn_s *conn)
|
|||||||
#ifdef CONFIG_NET_TCP_KEEPALIVE
|
#ifdef CONFIG_NET_TCP_KEEPALIVE
|
||||||
if (timeout == 0)
|
if (timeout == 0)
|
||||||
{
|
{
|
||||||
timeout = conn->keeptimer;
|
/* The conn->keeptimer units is decisecond and the timeout
|
||||||
|
* units is half-seconds, therefore they need to be unified.
|
||||||
|
*/
|
||||||
|
|
||||||
|
timeout = conn->keeptimer / DSEC_PER_HSEC;
|
||||||
}
|
}
|
||||||
else if (conn->keeptimer > 0 && timeout > conn->keeptimer)
|
else if (conn->keeptimer > 0 && timeout > conn->keeptimer / DSEC_PER_HSEC)
|
||||||
{
|
{
|
||||||
timeout = conn->keeptimer;
|
timeout = conn->keeptimer / DSEC_PER_HSEC;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -699,11 +703,11 @@ void tcp_timer(FAR struct net_driver_s *dev, FAR struct tcp_conn_s *conn)
|
|||||||
* received from the remote peer?
|
* received from the remote peer?
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (conn->keeptimer > hsec)
|
if (conn->keeptimer > hsec * DSEC_PER_HSEC)
|
||||||
{
|
{
|
||||||
/* Will not yet decrement to zero */
|
/* Will not yet decrement to zero */
|
||||||
|
|
||||||
conn->keeptimer -= hsec;
|
conn->keeptimer -= hsec * DSEC_PER_HSEC;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user