Author: norman
Date: Thu May 10 01:58:47 2007
New Revision: 536784
URL: http://svn.apache.org/viewvc?view=rev&rev=536784
Log:
Lookup local hostname and address on init of DNSServer to be able to resolv it
later. See JAMES-787 and JAMES-302
Modified:
james/server/trunk/core-library/src/main/java/org/apache/james/dnsserver/DNSServer.java
Modified:
james/server/trunk/core-library/src/main/java/org/apache/james/dnsserver/DNSServer.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/dnsserver/DNSServer.java?view=diff&rev=536784&r1=536783&r2=536784
==============================================================================
---
james/server/trunk/core-library/src/main/java/org/apache/james/dnsserver/DNSServer.java
(original)
+++
james/server/trunk/core-library/src/main/java/org/apache/james/dnsserver/DNSServer.java
Thu May 10 01:58:47 2007
@@ -111,6 +111,13 @@
* calls
*/
private boolean setAsDNSJavaDefault;
+
+ private String localHostName;
+
+ private String localCanonicalHostName;
+
+ private String localAddress;
+
/**
* @see
org.apache.avalon.framework.configuration.Configurable#configure(Configuration)
@@ -228,6 +235,15 @@
getLogger().info("Registered cache, resolver and search paths as
DNSJava defaults");
}
+ // Cache the local hostname and local address. This is needed because
+ // the following issues:
+ // JAMES-787
+ // JAMES-302
+ InetAddress addr = getLocalHost();
+ localCanonicalHostName = addr.getCanonicalHostName();
+ localHostName = addr.getHostName();
+ localAddress = addr.getHostAddress();
+
getLogger().debug("DNSServer ...init end");
}
@@ -492,7 +508,13 @@
*/
public InetAddress getByName(String host) throws UnknownHostException {
String name = allowIPLiteral(host);
+
try {
+ // Check if its local
+ if (name.equalsIgnoreCase(localHostName) ||
name.equalsIgnoreCase(localCanonicalHostName) ||name.equals(localAddress)) {
+ return getLocalHost();
+ }
+
return org.xbill.DNS.Address.getByAddress(name);
} catch (UnknownHostException e) {
Record[] records = lookupNoException(name, Type.A, "A");
@@ -510,6 +532,11 @@
public InetAddress[] getAllByName(String host) throws UnknownHostException
{
String name = allowIPLiteral(host);
try {
+ // Check if its local
+ if (name.equalsIgnoreCase(localHostName) ||
name.equalsIgnoreCase(localCanonicalHostName) ||name.equals(localAddress)) {
+ return new InetAddress[] {getLocalHost()};
+ }
+
InetAddress addr = org.xbill.DNS.Address.getByAddress(name);
return new InetAddress[] {addr};
} catch (UnknownHostException e) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]