From 9fb746824ac1bfef5486a23d58f281564b340206 Mon Sep 17 00:00:00 2001 From: Liu Zhi Fu Date: Sat, 14 Jul 2018 14:58:00 +0800 Subject: [PATCH] lwip: fix nonblocking tcp close issue Fix assert issue causes by closing nonblocking tcp socket. --- components/lwip/api/sockets.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/components/lwip/api/sockets.c b/components/lwip/api/sockets.c index badde6613..184b1080b 100644 --- a/components/lwip/api/sockets.c +++ b/components/lwip/api/sockets.c @@ -266,11 +266,11 @@ do{\ }\ }while(0) -#define LWIP_SET_CLOSE_FLAG() \ +#define LWIP_SET_CLOSE_FLAG(_flag) \ do{\ LWIP_SOCK_LOCK(__sock);\ LWIP_DEBUGF(ESP_THREAD_SAFE_DEBUG, ("mark sock closing\n"));\ - __sock->state = LWIP_SOCK_CLOSING;\ + __sock->state = (_flag);\ LWIP_SOCK_UNLOCK(__sock);\ }while(0) @@ -3312,8 +3312,11 @@ int lwip_close_r(int s) { LWIP_API_LOCK(); - LWIP_SET_CLOSE_FLAG(); + LWIP_SET_CLOSE_FLAG(LWIP_SOCK_CLOSING); __ret = lwip_close(s); + if (EWOULDBLOCK == __sock->err) { + LWIP_SET_CLOSE_FLAG(LWIP_SOCK_OPEN); + } LWIP_API_UNLOCK(); }