From 8318977ef41196def77aa3d662578e2fb18580b8 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Fri, 16 Jul 2021 01:21:05 +0200 Subject: net.server_epoll: Propagate returns from opportunistic writes So that if a write ends up writing directly to the socket, it gets the actual return value --- net/server_epoll.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'net') diff --git a/net/server_epoll.lua b/net/server_epoll.lua index 2a7a0b28..504dc8d5 100644 --- a/net/server_epoll.lua +++ b/net/server_epoll.lua @@ -477,7 +477,7 @@ function interface:onwritable() end self:setwritetimeout(false); self:ondrain(); -- Be aware of writes in ondrain - return; + return ok; elseif partial then self:debug("Sent %d out of %d buffered bytes", partial, #data); buffer[1] = data:sub(partial+1); @@ -494,6 +494,7 @@ function interface:onwritable() elseif err ~= "timeout" then self:on("disconnect", err); self:destroy(); + return ok, err; end end @@ -513,9 +514,9 @@ function interface:write(data) if not self._write_lock then if cfg.opportunistic_writes and not self._opportunistic_write then self._opportunistic_write = true; - self:onwritable(); + local ret, err = self:onwritable(); self._opportunistic_write = nil; - return #data; + return ret, err; end self:setwritetimeout(); self:set(nil, true); -- cgit v1.2.3