aboutsummaryrefslogtreecommitdiffstats
path: root/net/http
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2023-01-08 13:35:04 +0100
committerKim Alvefur <zash@zash.se>2023-01-08 13:35:04 +0100
commitfe97c773a6b8e61c6aee0511e30164e2fbdd6091 (patch)
treefbbd4e52087390ee5fde64e7ff27231864f3cb8c /net/http
parent91a064bd4985f7bf826faacb9faa680088f9a453 (diff)
downloadprosody-fe97c773a6b8e61c6aee0511e30164e2fbdd6091.tar.gz
prosody-fe97c773a6b8e61c6aee0511e30164e2fbdd6091.zip
net.http.server: Fix #1789
Unregistering the response before sending the trailer of the chunked transfer encoding prevents opportunistic writes from being invoked and running this code again when, which may cause an error when closing the file handle a second time. Normally the file size is known, so no chuck headers are sent.
Diffstat (limited to 'net/http')
-rw-r--r--net/http/server.lua2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/http/server.lua b/net/http/server.lua
index 97e15e42..4ebf96a1 100644
--- a/net/http/server.lua
+++ b/net/http/server.lua
@@ -377,12 +377,12 @@ function _M.send_file(response, f)
-- io.write("."); io.flush();
response.conn:write(chunk);
else
+ incomplete[response.conn] = nil;
if chunked then
response.conn:write("0\r\n\r\n");
end
-- io.write("\n");
if f.close then f:close(); end
- incomplete[response.conn] = nil;
return response:done();
end
end