Hi all,
This commit makes java.net.SocketPermission()'s constructor use
"localhost" when called with an empty hostport argument as mandated
by the spec.
Cheers,
Gary
Index: ChangeLog
===================================================================
RCS file: /cvsroot/classpath/classpath/ChangeLog,v
retrieving revision 1.8476
diff -u -r1.8476 ChangeLog
--- ChangeLog 31 Aug 2006 10:50:56 -0000 1.8476
+++ ChangeLog 31 Aug 2006 12:25:06 -0000
@@ -1,3 +1,11 @@
+2006-08-31 Gary Benson <[EMAIL PROTECTED]>
+
+ * java/net/SocketPermission.java
+ (maybeBracketIPv6Address): Renamed to processHostport.
+ (processHostport): Also translate "" to "localhost".
+ (setHostPort): Remove special cases for empty hostport and for
+ extra colons in hostport (processHostport handles these now).
+
2006-08-31 Mark Wielaard <[EMAIL PROTECTED]>
* javax/swing/text/ZoneView.java (Zone): Make static class.
Index: java/net/SocketPermission.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/net/SocketPermission.java,v
retrieving revision 1.21
diff -u -r1.21 SocketPermission.java
--- java/net/SocketPermission.java 29 Aug 2006 08:25:15 -0000 1.21
+++ java/net/SocketPermission.java 31 Aug 2006 12:25:06 -0000
@@ -164,21 +164,26 @@
*/
public SocketPermission(String hostport, String actions)
{
- super(maybeBracketIPv6Address(hostport));
+ super(processHostport(hostport));
setHostPort(getName());
setActions(actions);
}
/**
- * IPv6 addresses in the hostport must either be enclosed by
- * "[" and "]" or be specified in the full uncompressed form.
- * In the latter case proprietary JVMs will quote the address
- * with "[" and "]", so we do to.
+ * There are two cases in which hostport needs rewriting before
+ * being passed to the superclass constructor. If hostport is an
+ * empty string then it is substituted with "localhost". And if
+ * the host part of hostport is a literal IPv6 address in the full
+ * uncompressed form not enclosed with "[" and "]" then we enclose
+ * it with them.
*/
- private static String maybeBracketIPv6Address(String hostport)
+ private static String processHostport(String hostport)
{
- if (hostport.length() == 0 || hostport.charAt(0) == '[')
+ if (hostport.length() == 0)
+ return "localhost";
+
+ if (hostport.charAt(0) == '[')
return hostport;
int colons = 0, last_colon = 0;
@@ -221,11 +226,7 @@
{
// Split into host and ports
String ports;
- if (hostport.length() == 0)
- {
- host = ports = "";
- }
- else if (hostport.charAt(0) == '[')
+ if (hostport.charAt(0) == '[')
{
// host is a bracketed IPv6 address
int end = hostport.indexOf("]");
@@ -255,8 +256,6 @@
ports = hostport.substring(sep + 1);
}
}
- if (ports.indexOf(":") != -1)
- throw new IllegalArgumentException("Unexpected ':'");
// Parse and validate the ports
if (ports.length() == 0)