net.http.server: Fix #1789 0.12
authorKim Alvefur <zash@zash.se>
Sun, 08 Jan 2023 13:35:04 +0100
branch0.12
changeset 12835 1cdaf21584da
parent 12833 fba795dd99c8
child 12836 19365e0c0ddd
child 12838 dcbff9f038a0
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.
net/http/server.lua
--- 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