From e491e7d8e0e95c003b72b47fc3f25c5dd9d467b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Wed, 22 Oct 2014 18:36:48 +0200
Subject: [PATCH] Standards.URI: Reduce DWIM.

Fixes issues with Roxen.
---
 lib/modules/Standards.pmod/URI.pike     | 6 ++++--
 lib/modules/Standards.pmod/testsuite.in | 3 +++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/modules/Standards.pmod/URI.pike b/lib/modules/Standards.pmod/URI.pike
index c7e47ea077..c5bb0de04f 100644
--- a/lib/modules/Standards.pmod/URI.pike
+++ b/lib/modules/Standards.pmod/URI.pike
@@ -265,9 +265,11 @@ void reparse_uri(this_program|string|void base_uri)
 
   // DWIM for "www.cnn.com" style input, when parsed in the context of
   // base "http://".
-  if( !scheme && this::base_uri?->scheme &&
-      !sizeof(this::base_uri->authority) )
+  if( !has_prefix(uri, "//") && !scheme && this::base_uri?->scheme &&
+      !sizeof(this::base_uri->authority) &&
+      !sizeof(this::base_uri->path))
   {
+    DEBUG("DWIM authority: %O\n", uri);
     uri = "//"+uri;
   }
 
diff --git a/lib/modules/Standards.pmod/testsuite.in b/lib/modules/Standards.pmod/testsuite.in
index ff2964e620..ea1d26b69b 100644
--- a/lib/modules/Standards.pmod/testsuite.in
+++ b/lib/modules/Standards.pmod/testsuite.in
@@ -103,6 +103,9 @@ test_equal(Standards.URI("http://www.com/?a=b&c")->get_query_variables(),(["a":"
 test_equal(Standards.URI("http://www.com/?foo")->get_http_path_query(),"/?foo")
 test_equal(Standards.URI("http://www.com/?")->get_http_path_query(),"/?")
 test_equal(Standards.URI("http://www.com/")->get_http_path_query(),"/")
+test_equal((string)Standards.URI("://"), "://")
+test_equal((string)Standards.URI("/", "://"), ":///")
+test_equal((string)Standards.URI("foo.bar", ":///"), ":///foo.bar")
 test_eval_error(Standards.URI("www.com"))
 test_eq((string)Standards.URI("www.com","http://"),"http://www.com")
 test_eq((string)Standards.URI("www.com/x?a=b#y","http://"),"http://www.com/x?a=b#y")
-- 
GitLab