aboutsummaryrefslogtreecommitdiffstats
path: root/net/server_epoll.lua
diff options
context:
space:
mode:
Diffstat (limited to 'net/server_epoll.lua')
-rw-r--r--net/server_epoll.lua6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/server_epoll.lua b/net/server_epoll.lua
index ae8a66bb..4670f670 100644
--- a/net/server_epoll.lua
+++ b/net/server_epoll.lua
@@ -430,6 +430,7 @@ function interface:onreadable()
err = "timeout";
elseif err == "wantwrite" then
self:set(nil, true);
+ self:setwritetimeout();
err = "timeout";
elseif err == "timeout" and not self._connected then
err = "connection timeout";
@@ -510,8 +511,10 @@ function interface:onwritable()
end
if err == "wantwrite" or err == "timeout" then
self:set(nil, true);
+ self:setwritetimeout();
elseif err == "wantread" then
self:set(true, nil);
+ self:setreadtimeout();
elseif err ~= "timeout" then
self:on("disconnect", err);
self:destroy();
@@ -553,6 +556,7 @@ interface.send = interface.write;
function interface:close()
if self.writebuffer and (self.writebuffer[1] or type(self.writebuffer) == "string") then
self:set(false, true); -- Flush final buffer contents
+ self:setreadtimeout(false);
self:setwritetimeout();
self.write, self.send = noop, noop; -- No more writing
self:debug("Close after writing remaining buffered data");
@@ -772,11 +776,13 @@ end
function interface:pause()
self:noise("Pause reading");
+ self:setreadtimeout(false);
return self:set(false);
end
function interface:resume()
self:noise("Resume reading");
+ self:setreadtimeout();
return self:set(true);
end