mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-11-16 14:11:02 +00:00
fixed bug #37405 'err_tcp()' uses already freed 'netconn' object
This commit is contained in:
parent
6d8dee6d68
commit
5b8b5d459e
@ -66,6 +66,9 @@ HISTORY
|
||||
|
||||
++ Bugfixes:
|
||||
|
||||
2012-09-26: Simon Goldschmidt
|
||||
* api_msg.c: fixed bug #37405 'err_tcp()' uses already freed 'netconn' object
|
||||
|
||||
2012-09-26: patch by Henrik Persson
|
||||
* dhcp.c: patch #7843 Fix corner case with dhcp timeouts
|
||||
|
||||
|
@ -456,6 +456,14 @@ accept_function(void *arg, struct tcp_pcb *newpcb, err_t err)
|
||||
if (sys_mbox_trypost(&conn->acceptmbox, newconn) != ERR_OK) {
|
||||
/* When returning != ERR_OK, the pcb is aborted in tcp_process(),
|
||||
so do nothing here! */
|
||||
/* remove all references to this netconn from the pcb */
|
||||
struct tcp_pcb* pcb = newconn->pcb.tcp;
|
||||
tcp_arg(pcb, NULL);
|
||||
tcp_recv(pcb, NULL);
|
||||
tcp_sent(pcb, NULL);
|
||||
tcp_poll(pcb, NULL, 4);
|
||||
tcp_err(pcb, NULL);
|
||||
/* remove reference from to the pcb from this netconn */
|
||||
newconn->pcb.tcp = NULL;
|
||||
/* no need to drain since we know the recvmbox is empty. */
|
||||
sys_mbox_free(&newconn->recvmbox);
|
||||
|
Loading…
Reference in New Issue
Block a user