From d45388e4dc76115fca30ea9074878598d24373b9 Mon Sep 17 00:00:00 2001 From: cage Date: Fri, 15 Jul 2022 10:39:24 +0200 Subject: [PATCH] - [gemini] remove redirect loop when the meta was an absolute URI. --- src/gemini/client.lisp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/gemini/client.lisp b/src/gemini/client.lisp index 5d5e3e0..9fa98c6 100644 --- a/src/gemini/client.lisp +++ b/src/gemini/client.lisp @@ -518,18 +518,20 @@ (defgeneric build-redirect-iri (meta iri-from)) (defmethod build-redirect-iri (meta (iri-from iri:iri)) - (let* ((meta-url (ignore-errors (iri:iri-parse meta)))) + (let* ((meta-url (ignore-errors (iri:iri-parse meta)))) (when meta-url - (let* ((meta-query (uri:query meta-url)) - (meta-path (uri:path meta-url)) - (meta-path-query (if meta-query - (strcat meta-path "?" meta-query) - meta-path)) - (new-url (gemini-parser:absolutize-link meta-path-query - (uri:host iri-from) - (uri:port iri-from) - (uri:path iri-from)))) - new-url)))) + (if (absolute-gemini-url-p meta) + meta + (let* ((meta-query (uri:query meta-url)) + (meta-path (uri:path meta-url)) + (meta-path-query (if meta-query + (strcat meta-path "?" meta-query) + meta-path)) + (new-url (gemini-parser:absolutize-link meta-path-query + (uri:host iri-from) + (uri:port iri-from) + (uri:path iri-from)))) + new-url))))) (defmethod build-redirect-iri (meta (iri-from string)) (build-redirect-iri meta (iri:iri-parse iri-from)))