diff --git a/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/converting/processor/logic/LinkParser.java b/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/converting/processor/logic/LinkParser.java index 5e893725..45611e08 100644 --- a/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/converting/processor/logic/LinkParser.java +++ b/marginalia_nu/src/main/java/nu/marginalia/wmsa/edge/converting/processor/logic/LinkParser.java @@ -126,6 +126,9 @@ public class LinkParser { if (doesUrlStringHaveProtocol(s)) { return s; } + else if (s.startsWith("//")) { // scheme-relative URL + return baseUrl.proto + ":" + s; + } String[] parts = paramSeparatorPattern.split(s, 2); String path = parts[0]; diff --git a/marginalia_nu/src/test/java/nu/marginalia/wmsa/edge/crawling/LinkParserTest.java b/marginalia_nu/src/test/java/nu/marginalia/wmsa/edge/crawling/LinkParserTest.java index d4a7e428..065310f7 100644 --- a/marginalia_nu/src/test/java/nu/marginalia/wmsa/edge/crawling/LinkParserTest.java +++ b/marginalia_nu/src/test/java/nu/marginalia/wmsa/edge/crawling/LinkParserTest.java @@ -45,6 +45,7 @@ class LinkParserTest { @Test void testRelative() throws URISyntaxException { + assertEquals("http://search.marginalia.nu/", parseLink("//search.marginalia.nu", "/")); assertEquals("http://www.marginalia.nu/test", parseLink("../test", "/")); assertEquals("http://www.marginalia.nu/test", parseLink("test", "/")); assertEquals("http://www.marginalia.nu/foo/test", parseLink("test", "/foo/index.html"));