InetAddress.java (loopbackAddress): Renamed from localhostAddress.
authorBryce McKinlay <mckinlay@redhat.com>
Fri, 13 Aug 2004 22:17:34 +0000 (22:17 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Fri, 13 Aug 2004 22:17:34 +0000 (23:17 +0100)
2004-08-13  Bryce McKinlay  <mckinlay@redhat.com>

* java/net/InetAddress.java (loopbackAddress): Renamed from
localhostAddress.
(getByName): Return loopback address for null hostname, without
security check. Use lookup(), not getAllByName.
(getAllByName): Return loopback address for null hostname, without
security check.
* java/net/natInetAddressPosix.cc (lookup): Don't perform security
check here.

From-SVN: r85967

libjava/ChangeLog
libjava/java/net/InetAddress.java
libjava/java/net/natInetAddressPosix.cc

index 8a86bc9..7193883 100644 (file)
@@ -1,5 +1,16 @@
 2004-08-13  Bryce McKinlay  <mckinlay@redhat.com>
 
+       * java/net/InetAddress.java (loopbackAddress): Renamed from 
+       localhostAddress.
+       (getByName): Return loopback address for null hostname, without
+       security check. Use lookup(), not getAllByName.
+       (getAllByName): Return loopback address for null hostname, without
+       security check.
+       * java/net/natInetAddressPosix.cc (lookup): Don't perform security
+       check here.
+
+2004-08-13  Bryce McKinlay  <mckinlay@redhat.com>
+
        PR libgcj/17020
        Reported by Robin Green.
        * defineclass.cc (handleField): Don't throw exception on unrecognised
index 6d57566..cf1f3a5 100644 (file)
@@ -68,7 +68,10 @@ public class InetAddress implements Serializable
    */
   static InetAddress ANY_IF;
     
-  private static final byte[] localhostAddress = { 127, 0, 0, 1 };
+  private static final byte[] loopbackAddress = { 127, 0, 0, 1 };
+
+  private static final InetAddress loopback 
+    = new InetAddress (loopbackAddress, "localhost");
 
   private static InetAddress localhost = null;
 
@@ -564,7 +567,8 @@ public class InetAddress implements Serializable
    * default.  This method is equivalent to returning the first element in
    * the InetAddress array returned from GetAllByName.
    *
-   * @param hostname The name of the desired host, or null for the local machine.
+   * @param hostname The name of the desired host, or null for the local 
+   * loopback address.
    *
    * @return The address of the host as an InetAddress object.
    *
@@ -576,14 +580,15 @@ public class InetAddress implements Serializable
   public static InetAddress getByName(String hostname)
     throws UnknownHostException
   {
+    // If null or the empty string is supplied, the loopback address
+    // is returned. Note that this is permitted without a security check.
+    if (hostname == null || hostname.length() == 0)
+      return loopback;
+
     SecurityManager s = System.getSecurityManager();
     if (s != null)
       s.checkConnect(hostname, -1);
 
-    // Default to current host if necessary
-    if (hostname == null || hostname.length() == 0)
-      return getLocalHost();
-
     // Assume that the host string is an IP address
     byte[] address = aton(hostname);
     if (address != null)
@@ -608,8 +613,9 @@ public class InetAddress implements Serializable
       }
 
     // Try to resolve the host by DNS
-    InetAddress[] addresses = getAllByName(hostname);
-    return addresses[0];
+    InetAddress result = new InetAddress(null, null);
+    lookup (hostname, result, false);
+    return result;
   }
 
   /**
@@ -620,7 +626,7 @@ public class InetAddress implements Serializable
    * hostname of the local machine is supplied by default.
    *
    * @param hostname The name of the desired host, or null for the
-   * local machine.
+   * local loopback address.
    *
    * @return All addresses of the host as an array of InetAddress objects.
    *
@@ -632,6 +638,11 @@ public class InetAddress implements Serializable
   public static InetAddress[] getAllByName(String hostname)
     throws UnknownHostException
   {
+    // If null or the empty string is supplied, the loopback address
+    // is returned. Note that this is permitted without a security check.
+    if (hostname == null || hostname.length() == 0)
+      return new InetAddress[] {loopback};
+
     SecurityManager s = System.getSecurityManager();
     if (s != null)
       s.checkConnect(hostname, -1);
@@ -676,7 +687,7 @@ public class InetAddress implements Serializable
     // However, if there is a security manager, and the cached result
     // is other than "localhost", we need to check again.
     if (localhost == null
-       || (s != null && localhost.addr != localhostAddress))
+       || (s != null && ! localhost.isLoopbackAddress()))
       getLocalHost (s);
     
     return localhost;
@@ -724,7 +735,7 @@ public class InetAddress implements Serializable
       }
     
     if (localhost == null)
-      localhost = new InetAddress (localhostAddress, "localhost");
+      localhost = new InetAddress (loopbackAddress, "localhost");
   }
 
   /**
index b97502e..9edfae2 100644 (file)
@@ -229,13 +229,6 @@ java::net::InetAddress::lookup (jstring host, java::net::InetAddress* iaddr,
     {
       if (!all)
         host = JvNewStringUTF (hptr->h_name);
-      java::lang::SecurityException *ex = checkConnect (host);
-      if (ex != NULL)
-       {
-         if (iaddr == NULL || iaddr->addr == NULL)
-           throw ex;
-         hptr = NULL;
-       }
     }
   if (hptr == NULL)
     {