Diff

net/http/server.lua @ 12831:1cdaf21584da 0.12

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.
author Kim Alvefur <zash@zash.se>
date Sun, 08 Jan 2023 13:35:04 +0100
parent 11527:eaff6e548f12
child 12833:8cbb109ff7ec
child 12885:3a6dae39c70e
line wrap: on
line diff
--- a/net/http/server.lua	Sun Jan 01 16:20:58 2023 +0100
+++ b/net/http/server.lua	Sun Jan 08 13:35:04 2023 +0100
@@ -377,12 +377,12 @@
 			-- 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