# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1614458236 -3600
# Node ID d30c44a829c1161897a2116bd38c80f4d530aa81
# Parent  1b6298e7b550b3287f4fe0346ff78b50b6d3dacb
net.http.server: Set request.ip so mod_http doesn't have to

Because it already sets request.secure, which depends on the connection,
just like the IP, so it makes sense to do both in the same place.

Dealing with proxies can be left to mod_http for now, but maybe it could
move into some util some day?

diff -r 1b6298e7b550 -r d30c44a829c1 net/http/server.lua
--- a/net/http/server.lua	Sat Feb 27 21:07:36 2021 +0100
+++ b/net/http/server.lua	Sat Feb 27 21:37:16 2021 +0100
@@ -113,6 +113,7 @@
 function listener.onconnect(conn)
 	local session = { conn = conn };
 	local secure = conn:ssl() and true or nil;
+	local ip = conn:ip();
 	session.thread = async.runner(function (request)
 		local wait, done;
 		if request.partial == true then
@@ -127,6 +128,7 @@
 	end, runner_callbacks, session);
 	local function success_cb(request)
 		--log("debug", "success_cb: %s", request.path);
+		request.ip = ip;
 		request.secure = secure;
 		session.thread:run(request);
 	end
diff -r 1b6298e7b550 -r d30c44a829c1 plugins/mod_http.lua
--- a/plugins/mod_http.lua	Sat Feb 27 21:07:36 2021 +0100
+++ b/plugins/mod_http.lua	Sat Feb 27 21:37:16 2021 +0100
@@ -260,7 +260,7 @@
 end
 
 local function get_ip_from_request(request)
-	local ip = request.conn:ip();
+	local ip = request.ip;
 	local forwarded_for = request.headers.x_forwarded_for;
 	if forwarded_for and is_trusted_proxy(ip) then
 		-- luacheck: ignore 631