You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2008/04/04 23:06:07 UTC

svn commit: r644929 - /openejb/branches/openejb-3.0/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java

Author: dblevins
Date: Fri Apr  4 14:06:06 2008
New Revision: 644929

URL: http://svn.apache.org/viewvc?rev=644929&view=rev
Log:
Merging r644704 - http://svn.apache.org/viewvc?rev=644704&view=rev

svn merge -r 644703:644704 https://svn.apache.org/repos/asf/openejb/trunk/openejb3 .

------------------------------------------------------------------------
r644704 | jlaskowski | 2008-04-04 06:02:40 -0700 (Fri, 04 Apr 2008) | 1 line

Fix for java.lang.IllegalArgumentException: Mask localhost is not supported. where localhost is in only_from
------------------------------------------------------------------------

Modified:
    openejb/branches/openejb-3.0/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java

Modified: openejb/branches/openejb-3.0/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java?rev=644929&r1=644928&r2=644929&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java (original)
+++ openejb/branches/openejb-3.0/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java Fri Apr  4 14:06:06 2008
@@ -81,28 +81,40 @@
         if (ipString == null) {
             permissions.add(new PermitAllPermission());
         } else {
-            try {
-                InetAddress[] localIps = InetAddress.getAllByName("localhost");
-                for (int i = 0; i < localIps.length; i++) {
-                    if (localIps[i] instanceof Inet4Address) {
-                        permissions.add(new ExactIPAddressPermission(localIps[i].getAddress()));
-                    } else {
-                        permissions.add(new ExactIPv6AddressPermission(localIps[i].getAddress()));
-                    }
-                }
-            } catch (UnknownHostException e) {
-                throw new ServiceException("Could not get localhost inet address", e);
-            }
+        	String hostname = "localhost";
+            addIPAddressPermissions(permissions, hostname);
 
             StringTokenizer st = new StringTokenizer(ipString, " ");
             while (st.hasMoreTokens()) {
                 String mask = st.nextToken();
-                permissions.add(IPAddressPermissionFactory.getIPAddressMask(mask));
+                try {
+                	permissions.add(IPAddressPermissionFactory.getIPAddressMask(mask));
+                } catch (IllegalArgumentException iae) {
+                	// it could be that it is a hostname not ip address
+                	addIPAddressPermissions(permissions, mask);
+                }
             }
         }
 
         hostPermissions = (IPAddressPermission[]) permissions.toArray(new IPAddressPermission[permissions.size()]);
     }
+
+	private void addIPAddressPermissions(
+			LinkedList<IPAddressPermission> permissions, String hostname)
+			throws ServiceException {
+		try {
+		    InetAddress[] localIps = InetAddress.getAllByName(hostname);
+		    for (int i = 0; i < localIps.length; i++) {
+		        if (localIps[i] instanceof Inet4Address) {
+		            permissions.add(new ExactIPAddressPermission(localIps[i].getAddress()));
+		        } else {
+		            permissions.add(new ExactIPv6AddressPermission(localIps[i].getAddress()));
+		        }
+		    }
+		} catch (UnknownHostException e) {
+		    throw new ServiceException("Could not get " + hostname + " inet address", e);
+		}
+	}
 
     public void init(Properties props) throws Exception {
         parseAdminIPs(props);