agate

Simple gemini server for static files
git clone https://github.com/mbrubeck/agate.git
Log | Files | Refs | README

commit 1361f0746774aa2c95c1ff0468d4418e0535b0f7
parent c563f27b1a016eb5a5bf920cfd890215aece8d92
Author: Matt Brubeck <mbrubeck@limpet.net>
Date:   Fri,  1 Jan 2021 20:09:52 -0800

Scheme-relative URLs are no longer allowed

https://lists.orbitalfox.eu/archives/gemini/2020/003646.html

Diffstat:
Msrc/main.rs | 9++-------
1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/src/main.rs b/src/main.rs @@ -147,15 +147,10 @@ async fn parse_request(stream: &mut TlsStream<TcpStream>) -> std::result::Result } buf = &mut request[len..]; } - let request = std::str::from_utf8(&request[..len - 2]).or(Err((59, "Invalid URL")))?; + let request = std::str::from_utf8(&request[..len - 2]).or(Err((59, "Non-UTF-8 request")))?; log::info!("Got request for {:?}", request); - // Handle scheme-relative URLs. - let url = if request.starts_with("//") { - Url::parse(&format!("gemini:{}", request)) - } else { - Url::parse(request) - }.or(Err((59, "Invalid URL")))?; + let url = Url::parse(request).or(Err((59, "Invalid URL")))?; // Validate the URL, host and port. if url.scheme() != "gemini" {