net/server_epoll.lua
changeset 10232 e77bf4222fae
parent 10102 dda1c7ccb209
child 10237 600eee3c4752
--- a/net/server_epoll.lua	Sun Aug 25 23:25:42 2019 +0200
+++ b/net/server_epoll.lua	Wed Aug 28 01:41:00 2019 +0200
@@ -66,6 +66,9 @@
 	-- EXPERIMENTAL
 	-- Whether to kill connections in case of callback errors.
 	fatal_errors = false;
+
+	-- Attempt writes instantly
+	opportunistic_writes = false;
 }};
 local cfg = default_config.__index;
 
@@ -413,6 +416,7 @@
 		for i = #buffer, 2, -1 do
 			buffer[i] = nil;
 		end
+		self:set(nil, true);
 		self:setwritetimeout();
 	end
 	if err == "wantwrite" or err == "timeout" then
@@ -439,6 +443,10 @@
 		self.writebuffer = { data };
 	end
 	if not self._write_lock then
+		if cfg.opportunistic_writes then
+			self:onwritable();
+			return #data;
+		end
 		self:setwritetimeout();
 		self:set(nil, true);
 	end