aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcel <cel@lOUVT+Phkvai9a/cCS/RKo+S9hnPAQdVixms/7ldpPA=.ed25519>2020-06-30 08:15:51 -0400
committercel <cel@lOUVT+Phkvai9a/cCS/RKo+S9hnPAQdVixms/7ldpPA=.ed25519>2020-06-30 08:15:51 -0400
commit76a073b3b60e711ab781fb44f063e0a42d741e83 (patch)
tree47296542b1d6d33e60604b91e421111318a11cf1
parente506169f75b3644baf5edc9daeeda541f140976a (diff)
Normalize URLs to ensure slash after hostname
-rwxr-xr-xgemini.filter.dpi15
1 files changed, 12 insertions, 3 deletions
diff --git a/gemini.filter.dpi b/gemini.filter.dpi
index ff47cb8..400b851 100755
--- a/gemini.filter.dpi
+++ b/gemini.filter.dpi
@@ -223,11 +223,20 @@ serve_fail() {
}
serve_gemini() {
- url=$1
- url1=${url#gemini://}
- hostname=${url1%%/*}
+ url=${1%%#*}
+ url_noquery=${url%%\?*}
+ query=${url##*\?}
+ if [ "$query" = "$url_noquery" ]
+ then query=
+ else query="?$query"
+ fi
+ url_scheme_relative=${url_noquery#gemini://}
+ hostname=${url_scheme_relative%%/*}
+ path=${url_scheme_relative#*/}
+ if [ "$path" = "$hostname" ]; then path=; fi
host=${hostname%%:*}
port=${hostname##*:}
+ url="gemini://$hostname/$path$query"
# replace "?_=" with "?".
# dillo can only submit forms with name=value items, but Gemini