You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2015/01/10 18:44:09 UTC
wicket git commit: WICKET-5809 URL IPv6 parsing
Repository: wicket
Updated Branches:
refs/heads/master bfc7cfe39 -> b1f4e6a34
WICKET-5809 URL IPv6 parsing
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b1f4e6a3
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b1f4e6a3
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b1f4e6a3
Branch: refs/heads/master
Commit: b1f4e6a3444dab7869a26ce7914e4faaabd50462
Parents: bfc7cfe
Author: Andrea Del Bene <ad...@apache.org>
Authored: Sat Jan 10 18:30:12 2015 +0100
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Sat Jan 10 18:30:12 2015 +0100
----------------------------------------------------------------------
.../java/org/apache/wicket/request/Url.java | 12 +++++++---
.../java/org/apache/wicket/request/UrlTest.java | 24 ++++++++++++++++++++
2 files changed, 33 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/b1f4e6a3/wicket-request/src/main/java/org/apache/wicket/request/Url.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/Url.java b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
index 9d5b401..be49640 100755
--- a/wicket-request/src/main/java/org/apache/wicket/request/Url.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
@@ -290,7 +290,11 @@ public class Url implements Serializable
}
final int credentialsAt = hostAndPort.lastIndexOf('@') + 1;
- final int portAt = hostAndPort.substring(credentialsAt).lastIndexOf(':');
+ //square brackets are used for ip6 URLs
+ final int closeSqrBracketAt = hostAndPort.lastIndexOf(']') + 1;
+ final int portAt = hostAndPort.substring(credentialsAt)
+ .substring(closeSqrBracketAt)
+ .lastIndexOf(':');
if (portAt == -1)
{
@@ -299,8 +303,10 @@ public class Url implements Serializable
}
else
{
- result.host = hostAndPort.substring(0, portAt + credentialsAt);
- result.port = Integer.parseInt(hostAndPort.substring(portAt + credentialsAt + 1));
+ final int portOffset = portAt + credentialsAt + closeSqrBracketAt;
+
+ result.host = hostAndPort.substring(0, portOffset);
+ result.port = Integer.parseInt(hostAndPort.substring(portOffset + 1));
}
if (relativeAt < 0)
http://git-wip-us.apache.org/repos/asf/wicket/blob/b1f4e6a3/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java b/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
index 3102baf..75db0d6 100644
--- a/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
+++ b/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
@@ -1075,5 +1075,29 @@ public class UrlTest extends Assert
checkSegments(url, "", "");
checkQueryParams(url, "a", "b=c", "d", "e=f");
}
+
+ /**
+ * Parse IP6 addresses (https://www.ietf.org/rfc/rfc2732.txt)
+ *
+ * https://issues.apache.org/jira/browse/WICKET-5809
+ */
+ @Test
+ public void parseIp6Address()
+ {
+ String s = "https://[::1]/myapp";
+ Url url = Url.parse(s);
+
+ assertTrue(url.isFull());
+ checkUrl(url, "https", "[::1]", 443, "", "myapp");
+
+ //now with port in URL
+ s = "http://[::1]:1234/myapp";
+
+ url = Url.parse(s);
+
+ assertTrue(url.isFull());
+ checkUrl(url, "http", "[::1]", 1234, "", "myapp");
+
+ }
}