From 8688bd0593d656d75acc56ab2418a6fc8eb8e6bf Mon Sep 17 00:00:00 2001 From: xueyunfei Date: Thu, 14 May 2020 15:18:39 +0800 Subject: [PATCH 1/2] add LINGER to menuconfig --- components/lwip/Kconfig | 11 +++++++++++ components/lwip/port/esp32/include/lwipopts.h | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/components/lwip/Kconfig b/components/lwip/Kconfig index e2f289b643..d6f2aa13fe 100644 --- a/components/lwip/Kconfig +++ b/components/lwip/Kconfig @@ -63,6 +63,17 @@ menu "LWIP" will be redirected to lwip_select(), therefore, select can be used for sockets only. + config LWIP_SO_LINGER + bool "Enable SO_LINGER processing" + default n + help + Enabling this option allows SO_LINGER processing. + When close socket, the TCP connection will be immediately disconnected. + The unsent data in the send buffer will be discarded and an RST message + will be sent to the other party. It is worth noting that because of this way, + the abnormal handshake in 4 ends the TCP connection, the TCP connection will + not enter the 'TIME_WAIT' state. + config LWIP_SO_REUSE bool "Enable SO_REUSEADDR option" default y diff --git a/components/lwip/port/esp32/include/lwipopts.h b/components/lwip/port/esp32/include/lwipopts.h index 3e10020e0e..30f19ad679 100644 --- a/components/lwip/port/esp32/include/lwipopts.h +++ b/components/lwip/port/esp32/include/lwipopts.h @@ -538,6 +538,11 @@ */ #define LWIP_TCP_KEEPALIVE 1 +/** + * LWIP_SO_LINGER==1: Enable SO_LINGER processing. + */ +#define LWIP_SO_LINGER CONFIG_LWIP_SO_LINGER + /** * LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing. */ From 15916dfbec8b1342157de41f59c810c2da63c9f3 Mon Sep 17 00:00:00 2001 From: xueyunfei Date: Thu, 14 May 2020 15:18:39 +0800 Subject: [PATCH 2/2] add LINGER to menuconfig --- components/lwip/Kconfig | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/components/lwip/Kconfig b/components/lwip/Kconfig index d6f2aa13fe..b78790a1d8 100644 --- a/components/lwip/Kconfig +++ b/components/lwip/Kconfig @@ -68,11 +68,14 @@ menu "LWIP" default n help Enabling this option allows SO_LINGER processing. - When close socket, the TCP connection will be immediately disconnected. - The unsent data in the send buffer will be discarded and an RST message - will be sent to the other party. It is worth noting that because of this way, - the abnormal handshake in 4 ends the TCP connection, the TCP connection will - not enter the 'TIME_WAIT' state. + l_onoff = 1,l_linger can set the timeout. + + If l_linger=0, When a connection is closed, TCP will terminate the connection. + This means that TCP will discard any data packets stored in the socket send buffer + and send an RST to the peer. + + If l_linger!=0,Then closesocket() calls to block the process until + the remaining data packets has been sent or timed out. config LWIP_SO_REUSE bool "Enable SO_REUSEADDR option"