- Don't leak PCBs for connections that were not accepted

svn path=/trunk/; revision=59414
This commit is contained in:
Cameron Gutman 2013-07-03 10:22:11 +00:00
parent 16f15f2195
commit 21e39738fe

View file

@ -248,13 +248,15 @@ InternalRecvEventHandler(void *arg, PTCP_PCB pcb, struct pbuf *p, const err_t er
return ERR_OK;
}
/* This function MUST return an error value that is not ERR_ABRT or ERR_OK if the connection
* is not accepted to avoid leaking the new PCB */
static
err_t
InternalAcceptEventHandler(void *arg, PTCP_PCB newpcb, const err_t err)
{
/* Make sure the socket didn't get closed */
if (!arg)
return ERR_ABRT;
return ERR_CLSD;
TCPAcceptEventHandler(arg, newpcb);
@ -262,7 +264,7 @@ InternalAcceptEventHandler(void *arg, PTCP_PCB newpcb, const err_t err)
if (newpcb->callback_arg)
return ERR_OK;
else
return ERR_ABRT;
return ERR_CLSD;
}
static