2006-09-01 Gary Benson <gbenson@redhat.com>
+ * java/net/InetAddress.java (getLocalHost): Refactor to avoid
+ security check if getLocalHostname() fails and to provide more
+ meaningful exceptions it the security check fails.
+
+2006-09-01 Gary Benson <gbenson@redhat.com>
+
* java/net/InetAddress.java (getByAddress): Create Inet4Address
objects when passed IPv4-mapped IPv6 addresses.
(getByName, getAllByName): Defer to the above to ensure that the
String hostname = getLocalHostname();
- if (s != null)
+ if (hostname == null || hostname.length() == 0)
+ throw new UnknownHostException();
+
+ try
{
// "The Java Class Libraries" suggests that if the security
// manager disallows getting the local host name, then
// However, the JDK 1.2 API claims to throw SecurityException,
// which seems to suggest SecurityException is *not* caught.
// In this case, experimentation shows that former is correct.
- try
+ if (s != null)
{
// This is wrong, if the name returned from getLocalHostname()
// is not a fully qualified name. FIXME.
s.checkConnect (hostname, -1);
}
- catch (SecurityException ex)
- {
- hostname = null;
- }
+
+ localhost = new InetAddress (null, null);
+ lookup (hostname, localhost, false);
}
-
- if (hostname != null && hostname.length() != 0)
+ catch (Exception ex)
{
- try
- {
- localhost = new InetAddress (null, null);
- lookup (hostname, localhost, false);
- }
- catch (Exception ex)
- {
- UnknownHostException failure = new UnknownHostException(hostname);
- failure.initCause(ex);
- throw failure;
- }
+ UnknownHostException failure = new UnknownHostException(hostname);
+ failure.initCause(ex);
+ throw failure;
}
- else
- throw new UnknownHostException();
-
- if (localhost == null)
- localhost = new InetAddress (loopbackAddress, "localhost");
}
/**