net.server_epoll: Ensure calls to :write() return something
authorKim Alvefur <zash@zash.se>
Mon, 06 Dec 2021 10:59:14 +0100
changeset 12015 9dc36fdbdba1
parent 12014 f995d62044fa
child 12016 71d799a8638f
net.server_epoll: Ensure calls to :write() return something With opportunistic writes enabled, writes can return what :onwritable() returns, thus :onwritable() should return something sensible at each spot. Should prevent whatever caused > Error writing to connection: (nil) Tho this was probably harmless
net/server_epoll.lua
--- a/net/server_epoll.lua	Sun Dec 05 14:49:06 2021 +0100
+++ b/net/server_epoll.lua	Mon Dec 06 10:59:14 2021 +0100
@@ -489,7 +489,7 @@
 function interface:onwritable()
 	self._writing = true; -- prevent reentrant writes etc
 	self:onconnect();
-	if not self.conn then return; end -- could have been closed in onconnect
+	if not self.conn then return nil, "no-conn"; end -- could have been closed in onconnect
 	self:on("predrain");
 	local buffer = self.writebuffer;
 	local data = buffer or "";
@@ -542,6 +542,7 @@
 		self:destroy();
 		return ok, err;
 	end
+	return true, err;
 end
 
 -- The write buffer has been successfully emptied