Software /
code /
prosody
Diff
net/server_epoll.lua @ 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 |
parent | 12514:194469fb46f9 |
child | 12542:5ec9d6913162 |
line wrap: on
line diff
--- 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