From 5b69d1c8b999713815921b53bad0698e0d3fefc8 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sun, 21 Jul 2024 02:21:09 +0000 Subject: fix(response): handle non-trimmed redirect assumptions --- src/response.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/response.rs b/src/response.rs index 07161d5..3986b5a 100644 --- a/src/response.rs +++ b/src/response.rs @@ -58,7 +58,10 @@ For example: to proxy "gemini://fuwn.me/uptime", visit "/proxy/fuwn.me/uptime".< } }; - if response.content().is_none() { + if response.content().is_none() + && response.status() != &germ::request::Status::PermanentRedirect + && response.status() != &germ::request::Status::TemporaryRedirect + { response = match germ::request::request(&match url_from_path( req.path().trim_end_matches('/'), true, @@ -211,8 +214,16 @@ For example: to proxy "gemini://fuwn.me/uptime", visit "/proxy/fuwn.me/uptime".< )); let redirect_url = match url_from_path( - response.meta().trim_end_matches('/'), - true, + &if response.meta().trim_end_matches('/').starts_with('/') { + format!( + "/proxy/{}{}", + url.domain().unwrap_or_default(), + response.meta().trim_end_matches('/') + ) + } else { + response.meta().trim_end_matches('/').to_string() + }, + false, &mut is_proxy, &mut is_raw, &mut is_nocss, -- cgit v1.2.3