diff --git a/CHANGELOG b/CHANGELOG index 4b76efd5..0c453597 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -110,6 +110,10 @@ HISTORY ++ Bugfixes: + 2010-02-12: Simon Goldschmidt/Stephane Lesage + * api_msg.c: Fixed bug #28865 (Cannot close socket/netconn in non-blocking + connect) + 2010-02-12: Simon Goldschmidt * mem.h: Fixed bug #28866 (mem_realloc function defined in mem.h) diff --git a/src/api/api_msg.c b/src/api/api_msg.c index 4e394a71..7f44352a 100644 --- a/src/api/api_msg.c +++ b/src/api/api_msg.c @@ -762,11 +762,15 @@ void do_delconn(struct api_msg_msg *msg) { /* @todo TCP: abort running write/connect? */ - if ((msg->conn->state != NETCONN_NONE) && (msg->conn->state != NETCONN_LISTEN)) { + if ((msg->conn->state != NETCONN_NONE) && + (msg->conn->state != NETCONN_LISTEN) && + (msg->conn->state != NETCONN_CONNECT)) { /* this only happens for TCP netconns */ LWIP_ASSERT("msg->conn->type == NETCONN_TCP", msg->conn->type == NETCONN_TCP); msg->err = ERR_INPROGRESS; } else { + LWIP_ASSERT("blocking connect in progress", + (msg->conn->state != NETCONN_CONNECT) || IN_NONBLOCKING_CONNECT(msg->conn)); /* Drain and delete mboxes */ netconn_drain(msg->conn);