aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-07-21 02:21:09 +0000
committerFuwn <[email protected]>2024-07-21 02:22:07 +0000
commit6374a5f62d7de4fb4a90f5b39c5fd15b3f399c53 (patch)
tree6f42c02aaf83aa7fe56ae606131c501c2243a74e /src
parentchore: bump version (diff)
downloadseptember-6374a5f62d7de4fb4a90f5b39c5fd15b3f399c53.tar.xz
september-6374a5f62d7de4fb4a90f5b39c5fd15b3f399c53.zip
fix(response): handle non-trimmed redirect assumptions
Diffstat (limited to 'src')
-rw-r--r--src/response.rs17
1 files changed, 14 insertions, 3 deletions
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,