ref: 877421a1d364851d0a58e5e57b6e13b059db9e5d
parent: fb52dfe4197457eb5eb4134dece22ad42752f31e
author: Julien Blanchard <julien@typed-hole.org>
date: Sat Dec 26 10:24:38 EST 2020
Fix mailto: links and relative URLs starting with a /
--- a/castor.c
+++ b/castor.c
@@ -616,8 +616,8 @@
/* no slash, must be a hostname */
n = smprint("gemini://%s", current_base_url->host);
}else if(*link == '/'){
- /* start with a slash so skip it (+1) */
- n = smprint("%s%s", urlparse(current_base_url, link)->raw, estrdup(link)+1);
+ /* start with a slash so use the base host */
+ n = smprint("gemini://%s%s", current_base_url->host, estrdup(link));
}else{
/* make an absolute URL of the link */
n = smprint("%s%s", urlparse(current_base_url, link)->raw, estrdup(link));
--- a/url.c
+++ b/url.c
@@ -223,7 +223,10 @@
static Url *
saneurl(Url *u)
{
- if(u == nil || u->scheme == nil || Upath(u) == nil){
+ if(strcmp(u->scheme, "mailto") == 0 && Upath(u) != nil)
+ return u;
+
+ if(u == nil || u->scheme == nil || u->host == nil || Upath(u) == nil){
freeurl(u);
return nil;
}