aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2021-02-27 21:37:16 +0100
committerKim Alvefur <zash@zash.se>2021-02-27 21:37:16 +0100
commit2acba6238860aaf3e323b12ddcd6d89d6644b486 (patch)
tree71f368914e78246814265e0cf28e168908db1af0
parentd8bcee69f3b287f8948604e72f76cf543cac33a0 (diff)
downloadprosody-2acba6238860aaf3e323b12ddcd6d89d6644b486.tar.gz
prosody-2acba6238860aaf3e323b12ddcd6d89d6644b486.zip
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?
-rw-r--r--net/http/server.lua2
-rw-r--r--plugins/mod_http.lua2
2 files changed, 3 insertions, 1 deletions
diff --git a/net/http/server.lua b/net/http/server.lua
index df87283a..ab71dbc9 100644
--- a/net/http/server.lua
+++ b/net/http/server.lua
@@ -113,6 +113,7 @@ local function noop() end
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 @@ function listener.onconnect(conn)
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 --git a/plugins/mod_http.lua b/plugins/mod_http.lua
index b9a76c90..d81f4ab7 100644
--- a/plugins/mod_http.lua
+++ b/plugins/mod_http.lua
@@ -260,7 +260,7 @@ local function is_trusted_proxy(ip)
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