aboutsummaryrefslogtreecommitdiffstats
path: root/net/server_event.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2018-10-25 15:12:59 +0200
committerKim Alvefur <zash@zash.se>2018-10-25 15:12:59 +0200
commit3899c7ac4b50242ccfc78edc6d5e3d6c3b954008 (patch)
treef10f829a3a201917528af2117ebe78b410d1fab8 /net/server_event.lua
parent5834d45f487f3875987620843914c47a3824feb7 (diff)
downloadprosody-3899c7ac4b50242ccfc78edc6d5e3d6c3b954008.tar.gz
prosody-3899c7ac4b50242ccfc78edc6d5e3d6c3b954008.zip
net.server: Add an API for holding writes of outgoing data
Diffstat (limited to 'net/server_event.lua')
-rw-r--r--net/server_event.lua13
1 files changed, 13 insertions, 0 deletions
diff --git a/net/server_event.lua b/net/server_event.lua
index ca80c3f2..70757e03 100644
--- a/net/server_event.lua
+++ b/net/server_event.lua
@@ -273,6 +273,19 @@ function interface_mt:resume()
end
end
+function interface_mt:pause_writes()
+ return self:_lock(self.nointerface, self.noreading, true);
+end
+
+function interface_mt:resume_writes()
+ self:_lock(self.nointerface, self.noreading, false);
+ if self.writecallback and not self.eventwrite then
+ self.eventwrite = addevent( base, self.conn, EV_WRITE, self.writecallback, cfg.WRITE_TIMEOUT ); -- register callback
+ return true;
+ end
+end
+
+
function interface_mt:counter(c)
if c then
self._connections = self._connections + c