--- a/net/server_epoll.lua Sun Oct 28 17:11:18 2018 +0100
+++ b/net/server_epoll.lua Thu Oct 25 15:12:59 2018 +0200
@@ -409,8 +409,10 @@
else
self.writebuffer = { data };
end
- self:setwritetimeout();
- self:set(nil, true);
+ if not self._write_lock then
+ self:setwritetimeout();
+ self:set(nil, true);
+ end
return #data;
end
interface.send = interface.write;
@@ -590,6 +592,20 @@
end);
end
+function interface:pause_writes()
+ self._write_lock = true;
+ self:setwritetimeout(false);
+ self:set(nil, false);
+end
+
+function interface:resume_writes()
+ self._write_lock = nil;
+ if self.writebuffer[1] then
+ self:setwritetimeout();
+ self:set(nil, true);
+ end
+end
+
-- Connected!
function interface:onconnect()
if self.conn and not self.peername and self.conn.getpeername then