Software /
code /
prosody
Changeset
12515:76c1725f4467
net.server_epoll: Add option to defer accept() until data available
This is a Linux(?) socket option that delays the accept signal until
there is data available to read. E.g. with HTTP this might mean that a
whole request can be handled without going back trough another turn of
the main loop, and an initial client <stream> can be responded to.
This may have effects on latency and resource use, as the server does
not need to allocate resources until really needed.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 15 May 2022 22:41:17 +0200 |
parents | 12514:194469fb46f9 |
children | 12516:d76ac22f3571 |
files | CHANGES net/server_epoll.lua |
diffstat | 2 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES Fri Jul 16 00:57:42 2021 +0200 +++ b/CHANGES Sun May 15 22:41:17 2022 +0200 @@ -12,6 +12,7 @@ - Honour 'weight' parameter during SRV record selection - Support for RFC 8305 "Happy Eyeballs" to improve IPv4/IPv6 connectivity - Support for TCP Fast Open in server_epoll (pending LuaSocket support) +- Support for deferred accept in server_epoll (pending LuaSocket support) 0.12.0 ======
--- a/net/server_epoll.lua Fri Jul 16 00:57:42 2021 +0200 +++ b/net/server_epoll.lua Sun May 15 22:41:17 2022 +0200 @@ -95,6 +95,9 @@ -- TCP Fast Open tcp_fastopen = false; + + -- Defer accept until incoming data is available + tcp_defer_accept = false; }}; local cfg = default_config.__index; @@ -912,6 +915,9 @@ if cfg.tcp_fastopen then server:setoption("tcp-fastopen", cfg.tcp_fastopen); end + if type(cfg.tcp_defer_accept) == "number" then + server:setoption("tcp-defer-accept", cfg.tcp_defer_accept); + end server:add(true, false); return server; end