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]

Reply via email to