aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2021-11-19 15:45:01 +0100
committerKim Alvefur <zash@zash.se>2021-11-19 15:45:01 +0100
commit8ac98af8b88e3f2d7f8d91a5dfe568cc2b9b86d2 (patch)
tree6abefa6e95d72cd375daf904ce6abd76175f8e46 /net
parent2921cef48fb437f01de005f53bbf8e4ca1470a74 (diff)
downloadprosody-8ac98af8b88e3f2d7f8d91a5dfe568cc2b9b86d2.tar.gz
prosody-8ac98af8b88e3f2d7f8d91a5dfe568cc2b9b86d2.zip
net.server_epoll: Fix streaming downloads (thanks Menel)
ff4e34c448a4 broke the way net.http.server streams downloads from disk because it made writes from the ondrain callback no longer reset the want-write flag, causing the download to halt. Writes from the predrain handler still must not trigger anything but additions to the buffer, since it is about to do all the socket writing already.
Diffstat (limited to 'net')
-rw-r--r--net/server_epoll.lua2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/server_epoll.lua b/net/server_epoll.lua
index 8a70e2dc..4852d7c0 100644
--- a/net/server_epoll.lua
+++ b/net/server_epoll.lua
@@ -513,9 +513,9 @@ function interface:onwritable()
else
self.writebuffer = nil;
end
+ self._writing = nil;
self:setwritetimeout(false);
self:ondrain(); -- Be aware of writes in ondrain
- self._writing = nil;
return ok;
elseif partial then
self:debug("Sent %d out of %d buffered bytes", partial, #data);