From 21e39738fe4d42283323a4f15c64fc72a3c214c9 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 3 Jul 2013 10:22:11 +0000 Subject: [PATCH] [LWIP] - Don't leak PCBs for connections that were not accepted svn path=/trunk/; revision=59414 --- reactos/lib/drivers/lwip/src/rostcp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/reactos/lib/drivers/lwip/src/rostcp.c b/reactos/lib/drivers/lwip/src/rostcp.c index 1e7374828b0..57c8876c29d 100755 --- a/reactos/lib/drivers/lwip/src/rostcp.c +++ b/reactos/lib/drivers/lwip/src/rostcp.c @@ -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