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