Hi Jaikiran,

On 13/04/18 15:29, Jaikiran Pai wrote:
The javadoc of InetAddress.getByName(host) and getAllByName(host) states that:

If the host is null then an InetAddress representing an address of the loopback interface is returned.

For non-null values the javadoc explains what the implementation does. However, there seems to be no mention of what it does with an empty string (length == 0) value for the host param. Right now, the implementation seems to treat an empty value the same way it treats the host == null case and returns an InetAddress representing the loopback address.

Consider the following example:

public class InetAddressTest {
     public static void main(final String[] args) throws Exception {
System.out.println("InetAddress.getByName() for empty string returns " + java.net.InetAddress.getByName("")); System.out.println("InetAddress.getAllByName() for empty string returns " + java.util.Arrays.toString(java.net.InetAddress.getAllByName("")));

     }
}

This outputs:

InetAddress.getByName() for empty string returns localhost/127.0.0.1
InetAddress.getAllByName() for empty string returns [localhost/127.0.0.1]


Is it intentional for these APIs to behave this way for empty string?

Yes.

If so, should the javadoc be updated to explicitly state this behaviour?

Yeah, probably.

The following JIRA issue has been filed to track this:
  https://bugs.openjdk.java.net/browse/JDK-8201545

-Chris.

Reply via email to