1
0
Fork 0

- [gemini] remove redirect loop when the meta was an absolute URI.

This commit is contained in:
cage 2022-07-15 10:39:24 +02:00
parent de980b44b7
commit d45388e4dc
1 changed files with 13 additions and 11 deletions

View File

@ -518,18 +518,20 @@
(defgeneric build-redirect-iri (meta iri-from)) (defgeneric build-redirect-iri (meta iri-from))
(defmethod build-redirect-iri (meta (iri-from iri:iri)) (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 (when meta-url
(let* ((meta-query (uri:query meta-url)) (if (absolute-gemini-url-p meta)
(meta-path (uri:path meta-url)) meta
(meta-path-query (if meta-query (let* ((meta-query (uri:query meta-url))
(strcat meta-path "?" meta-query) (meta-path (uri:path meta-url))
meta-path)) (meta-path-query (if meta-query
(new-url (gemini-parser:absolutize-link meta-path-query (strcat meta-path "?" meta-query)
(uri:host iri-from) meta-path))
(uri:port iri-from) (new-url (gemini-parser:absolutize-link meta-path-query
(uri:path iri-from)))) (uri:host iri-from)
new-url)))) (uri:port iri-from)
(uri:path iri-from))))
new-url)))))
(defmethod build-redirect-iri (meta (iri-from string)) (defmethod build-redirect-iri (meta (iri-from string))
(build-redirect-iri meta (iri:iri-parse iri-from))) (build-redirect-iri meta (iri:iri-parse iri-from)))