You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by jk...@apache.org on 2010/08/29 23:07:30 UTC
svn commit: r990653 - in /ant/core/trunk: WHATSNEW
src/main/org/apache/tools/ant/taskdefs/HostInfo.java
Author: jkf
Date: Sun Aug 29 21:07:29 2010
New Revision: 990653
URL: http://svn.apache.org/viewvc?rev=990653&view=rev
Log:
Bugzilla 49513, reported by jks/iname
Availability of hostname is now taken into consideration when selecting a local address.
Modified:
ant/core/trunk/WHATSNEW
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/HostInfo.java
Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=990653&r1=990652&r2=990653&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Sun Aug 29 21:07:29 2010
@@ -55,6 +55,14 @@ Changes that could break older environme
Fixed bugs:
-----------
+ * hostinfo now prefers addresses with a hostname over addresses without
+ a hostname, provided the addresses have the same scope.
+ For local lookup, no IP address will be put in NAME / DOMAIN anymore.
+ For remote lookup, if a host name was provided and only an IP address is
+ found, the IP address will no longer overwrite the host name provided to the
+ task.
+ Bugzilla Report 49513
+
* mmap-based file copy problems under JDK 1.4 on Linux.
Bugzilla Report 49430.
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/HostInfo.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/HostInfo.java?rev=990653&r1=990652&r2=990653&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/HostInfo.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/HostInfo.java Sun Aug 29 21:07:29 2010
@@ -129,7 +129,7 @@ public class HostInfo extends Task {
}
selectAddresses();
- if (nameAddr != null) {
+ if (nameAddr != null && hasHostName(nameAddr)) {
setDomainAndName(nameAddr.getCanonicalHostName());
} else {
setProperty(DOMAIN, DEF_DOMAIN);
@@ -153,6 +153,11 @@ public class HostInfo extends Task {
setProperty(ADDR6, DEF_LOCAL_ADDR6);
}
}
+
+ private boolean hasHostName(InetAddress addr)
+ {
+ return !addr.getHostAddress().equals(addr.getCanonicalHostName());
+ }
private void selectAddresses() {
Iterator i = inetAddrs.iterator();
@@ -167,7 +172,7 @@ public class HostInfo extends Task {
}
}
- nameAddr = selectBestAddress(best6, best4);
+ nameAddr = selectBestAddress(best4, best6);
}
private InetAddress selectBestAddress(InetAddress bestSoFar,
@@ -177,7 +182,7 @@ public class HostInfo extends Task {
// none selected so far, so this one is better.
best = current;
} else {
- if (current.isLoopbackAddress()) {
+ if (current == null || current.isLoopbackAddress()) {
// definitely not better than the previously selected address.
} else if (current.isLinkLocalAddress()) {
// link local considered better than loopback
@@ -186,13 +191,24 @@ public class HostInfo extends Task {
}
} else if (current.isSiteLocalAddress()) {
// site local considered better than link local (and loopback)
- if (best.isLoopbackAddress() || best.isLinkLocalAddress()) {
+ // address with hostname resolved considered better than
+ // address without hostname
+ if (best.isLoopbackAddress()
+ || best.isLinkLocalAddress()
+ || !hasHostName(best)) {
best = current;
}
} else {
- // current is a global address, and therefore best (at least
- // equally well)
- best = current;
+ // current is a "Global address", considered better than
+ // site local (and better than link local, loopback)
+ // address with hostname resolved considered better than
+ // address without hostname
+ if (best.isLoopbackAddress()
+ || best.isLinkLocalAddress()
+ || best.isSiteLocalAddress()
+ || !hasHostName(best)) {
+ best = current;
+ }
}
}
return best;
@@ -204,7 +220,7 @@ public class HostInfo extends Task {
selectAddresses();
- if (nameAddr != null) {
+ if (nameAddr != null && hasHostName(nameAddr)) {
setDomainAndName(nameAddr.getCanonicalHostName());
} else {
setDomainAndName(host);