From f6b5201f641d3c4af0478bcd4fb14aebd3448f8d Mon Sep 17 00:00:00 2001 From: Tomas Hruby Date: Sun, 14 Oct 2012 20:18:12 +0000 Subject: [PATCH] LWIP - fixed TCP panic when shutting down - listening sockets do not handle some callbacks --- servers/lwip/tcp.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/servers/lwip/tcp.c b/servers/lwip/tcp.c index 077b964df..086484f0a 100644 --- a/servers/lwip/tcp.c +++ b/servers/lwip/tcp.c @@ -156,10 +156,12 @@ static void tcp_op_close(struct socket * sock, __unused message * m) int err; /* we are not able to handle any callback anymore */ - tcp_arg((struct tcp_pcb *)sock->pcb, NULL); - tcp_err((struct tcp_pcb *)sock->pcb, NULL); - tcp_sent((struct tcp_pcb *)sock->pcb, NULL); - tcp_recv((struct tcp_pcb *)sock->pcb, NULL); + if (((struct tcp_pcb *)sock->pcb)->state != LISTEN) { + tcp_arg((struct tcp_pcb *)sock->pcb, NULL); + tcp_err((struct tcp_pcb *)sock->pcb, NULL); + tcp_sent((struct tcp_pcb *)sock->pcb, NULL); + tcp_recv((struct tcp_pcb *)sock->pcb, NULL); + } err = tcp_close(sock->pcb); assert(err == ERR_OK); -- 2.44.0