diff --git a/components/lwip/Kconfig b/components/lwip/Kconfig index e2f289b64..d6f2aa13f 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 3e10020e0..30f19ad67 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. */