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
parents eaff6e548f12
children 8cbb109ff7ec 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