net.http: Set Connection header based on connection pool usage
authorKim Alvefur <zash@zash.se>
Sat, 11 Nov 2023 23:48:45 +0100
changeset 13324 23f95714c386
parent 13323 6d6291dfe735
child 13325 19c814d4dd3a
net.http: Set Connection header based on connection pool usage Connection: keep-alive is implicit in HTTP/1.1 but explicit > implicit
net/http.lua
--- a/net/http.lua	Sat Nov 11 23:08:34 2023 +0100
+++ b/net/http.lua	Sat Nov 11 23:48:45 2023 +0100
@@ -115,7 +115,8 @@
 				request.callback(r.body, r.code, r, request);
 				request.callback = nil;
 			end
-			destroy_request(request);
+			local persistent = (","..(r.headers.connection or "keep-alive")..","):find(",keep-alive,")
+			destroy_request(request, persistent);
 		end
 		local function options_cb()
 			return request;
@@ -269,6 +270,12 @@
 		["User-Agent"] = "Prosody XMPP Server";
 	};
 
+	if self.pool then
+		headers["Connection"] = "keep-alive";
+	else
+		headers["Connection"] = "close";
+	end
+
 	if req.userinfo then
 		headers["Authorization"] = "Basic "..b64(req.userinfo);
 	end