From 67d88526b9481dfb81fb9652140a498ba98611b6 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Thu, 9 Aug 2018 11:47:00 +0200 Subject: [PATCH] VFS LwIP: delay accepted connections Ref #2335 --- repos/libports/include/lwip/lwipopts.h | 1 + repos/libports/src/lib/vfs/lwip/vfs.cc | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/repos/libports/include/lwip/lwipopts.h b/repos/libports/include/lwip/lwipopts.h index 56035323e1..bef50f5917 100644 --- a/repos/libports/include/lwip/lwipopts.h +++ b/repos/libports/include/lwip/lwipopts.h @@ -36,6 +36,7 @@ extern "C" { #define LWIP_NETIF_LOOPBACK 1 /* Looping back to same address? */ #define LWIP_STATS 0 /* disable stating */ #define LWIP_TCP_TIMESTAMPS 1 +#define TCP_LISTEN_BACKLOG 1 #define TCP_MSS 1460 #define TCP_WND (32 * TCP_MSS) #define TCP_SND_BUF (32 * TCP_MSS) diff --git a/repos/libports/src/lib/vfs/lwip/vfs.cc b/repos/libports/src/lib/vfs/lwip/vfs.cc index c7e7475415..ab5f3b272b 100644 --- a/repos/libports/src/lib/vfs/lwip/vfs.cc +++ b/repos/libports/src/lib/vfs/lwip/vfs.cc @@ -1040,10 +1040,6 @@ class Lwip::Tcp_socket_dir final : /* tcp_sent(_pcb, tcp_sent_callback); */ tcp_err(_pcb, tcp_err_callback); - - if (pcb) { - tcp_backlog_accepted(_pcb); - } } ~Tcp_socket_dir() @@ -1069,6 +1065,8 @@ class Lwip::Tcp_socket_dir final : Pcb_pending *elem = new (alloc) Pcb_pending(newpcb); _pcb_pending.insert(elem); + tcp_backlog_delayed(newpcb); + tcp_arg(newpcb, elem); tcp_recv(newpcb, tcp_delayed_recv_callback); @@ -1250,6 +1248,8 @@ class Lwip::Tcp_socket_dir final : handle.socket = &new_dir; new_dir.handles.insert(&handle); + tcp_backlog_accepted(pp->pcb); + _pcb_pending.remove(pp); destroy(alloc, pp);