From 07797d9a412241ddbdcfd845d28f5ff17a93f690 Mon Sep 17 00:00:00 2001 From: Jon Shallow Date: Tue, 9 Dec 2025 17:03:01 +0000 Subject: [PATCH] coap_strm_lwip.c: Clean up TCP close --- src/coap_strm_lwip.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/coap_strm_lwip.c b/src/coap_strm_lwip.c index 7b9879be..900f7b6d 100644 --- a/src/coap_strm_lwip.c +++ b/src/coap_strm_lwip.c @@ -420,6 +420,10 @@ coap_lwip_endpoint_tcp_close(void *ctx) { struct tcp_pcb *tcp_pcb = (struct tcp_pcb *)ctx; if (tcp_pcb) { + tcp_accept(tcp_pcb, NULL); + tcp_err(tcp_pcb, NULL); + tcp_arg(tcp_pcb, NULL); + tcp_recv(tcp_pcb, NULL); tcp_close(tcp_pcb); } } @@ -429,14 +433,12 @@ coap_lwip_endpoint_tcp_close(void *ctx) { void coap_socket_strm_close(coap_socket_t *sock) { struct tcp_pcb *tcp_pcb = sock->tcp_pcb; -#if NO_SYS == 0 - err_t err; -#endif /* NO_SYS == 0 */ sock->tcp_pcb = NULL; if (tcp_pcb) { - tcp_arg(tcp_pcb, NULL); #if NO_SYS == 0 + err_t err; + if (coap_lwip_in_call_back_ref == 0) { #if COAP_SERVER_SUPPORT if (sock->endpoint) @@ -453,9 +455,12 @@ coap_socket_strm_close(coap_socket_t *sock) { } else { #endif /* NO_SYS == 0 */ #if COAP_SERVER_SUPPORT - if (!sock->endpoint) + if (sock->endpoint) + tcp_accept(tcp_pcb, NULL); #endif /* COAP_SERVER_SUPPORT */ - tcp_recv(tcp_pcb, NULL); + tcp_recv(tcp_pcb, NULL); + tcp_arg(tcp_pcb, NULL); + tcp_err(tcp_pcb, NULL); tcp_close(tcp_pcb); #if NO_SYS == 0 }