From 78bfae127de0eb32d98a41a9f9e3d85e53bb6b7f Mon Sep 17 00:00:00 2001 From: yggverse Date: Wed, 22 Jan 2025 21:53:44 +0200 Subject: [PATCH] fix Titan base replace --- .../window/tab/item/client/driver/gemini.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/app/browser/window/tab/item/client/driver/gemini.rs b/src/app/browser/window/tab/item/client/driver/gemini.rs index 3bf7e014..4fee9a18 100644 --- a/src/app/browser/window/tab/item/client/driver/gemini.rs +++ b/src/app/browser/window/tab/item/client/driver/gemini.rs @@ -404,7 +404,19 @@ fn handle( // Expected target URL in response meta match response.meta.data { Some(data) => match uri.parse_relative(data.as_str(), UriFlags::NONE) { - Ok(target) => { + Ok(absolute) => { + // Replace Titan base + let target = Uri::build( + UriFlags::NONE, + "gemini", + absolute.userinfo().as_deref(), + absolute.host().as_deref(), + absolute.port(), + absolute.path().as_str(), + absolute.query().as_deref(), + absolute.fragment().as_deref(), + ); + let total = redirects.take() + 1; // Validate total redirects by protocol specification @@ -417,7 +429,7 @@ fn handle( redirects.replace(0); // reset // Disallow external redirection - } else if "gemini" != target.scheme().replace("titan", "gemini") // alias + } else if "gemini" != target.scheme() || uri.port() != target.port() || uri.host() != target.host() { let status = subject.page.content.to_status_failure();