From commits-return-5339-apmail-openejb-commits-archive=openejb.apache.org@openejb.apache.org Fri Apr 04 13:03:04 2008 Return-Path: Delivered-To: apmail-openejb-commits-archive@www.apache.org Received: (qmail 9554 invoked from network); 4 Apr 2008 13:03:04 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 4 Apr 2008 13:03:04 -0000 Received: (qmail 76377 invoked by uid 500); 4 Apr 2008 13:03:04 -0000 Delivered-To: apmail-openejb-commits-archive@openejb.apache.org Received: (qmail 76365 invoked by uid 500); 4 Apr 2008 13:03:04 -0000 Mailing-List: contact commits-help@openejb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openejb.apache.org Delivered-To: mailing list commits@openejb.apache.org Received: (qmail 76356 invoked by uid 99); 4 Apr 2008 13:03:04 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Apr 2008 06:03:04 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Apr 2008 13:02:30 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 2C5F71A9832; Fri, 4 Apr 2008 06:02:43 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r644704 - /openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java Date: Fri, 04 Apr 2008 13:02:42 -0000 To: commits@openejb.apache.org From: jlaskowski@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080404130243.2C5F71A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jlaskowski Date: Fri Apr 4 06:02:40 2008 New Revision: 644704 URL: http://svn.apache.org/viewvc?rev=644704&view=rev Log: Fix for java.lang.IllegalArgumentException: Mask localhost is not supported. where localhost is in only_from Modified: openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java Modified: openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java?rev=644704&r1=644703&r2=644704&view=diff ============================================================================== --- openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java (original) +++ openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceAccessController.java Fri Apr 4 06:02:40 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 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);