Index: src/main/java/org/ow2/petals/binding/soap/listener/incoming/SoapExternalListenerManager.java
===================================================================
--- src/main/java/org/ow2/petals/binding/soap/listener/incoming/SoapExternalListenerManager.java (revision 16332)
+++ src/main/java/org/ow2/petals/binding/soap/listener/incoming/SoapExternalListenerManager.java (working copy)
@@ -260,14 +261,21 @@
}
- if (NetworkUtil.isLocalAddress(address)) {
- - config.addAddress(address);
- config.setRestrict(true);
+ if (address != null) {
+ if (NetworkUtil.isLocalAddress(address)) {
+ + config.addAddress(address);
+ config.setRestrict(true);
+ } else {
+ logger.warning(address + " is not a valid local address, using the wildcard one");
+ + + config.setRestrict(false);
+ config.addAddresses(NetworkUtil.getAllIPv4InetAddresses());
+ }
} else {
- logger.warning(address + " is not a valid local address, using the wildcard one");
- - + logger.warning("Unable to get the IP adress associated to the host '" + host + "'.");
+ logger.warning("All available local adresses are used to listen incoming requests.");
config.setRestrict(false);
config.addAddresses(NetworkUtil.getAllIPv4InetAddresses());
}
Index: src/main/java/org/ow2/petals/binding/soap/util/NetworkUtil.java
===================================================================
--- src/main/java/org/ow2/petals/binding/soap/util/NetworkUtil.java (revision 16332)
+++ src/main/java/org/ow2/petals/binding/soap/util/NetworkUtil.java (working copy)
@@ -122,29 +122,27 @@
}
/**
- * Returns true if the given address is not null and is one of the local
- * host address including the loopback address
+ * Returns true if the given address is not null and is one of the local host address including the loopback address
*
* @param address
+ * The {@link InetAddress} to check as local adress. Must be non null.
* @return
+ * @throws SocketException
+ * An error occurs getting local network interfaces.
*/
- public static boolean isLocalAddress(InetAddress address) {
- boolean result = false;
- if (address != null) {
- try {
- Enumeration<NetworkInterface> itfs = NetworkInterface.getNetworkInterfaces();
- while (itfs.hasMoreElements()) {
- NetworkInterface itf = itfs.nextElement();
- Enumeration<InetAddress> iaenum = itf.getInetAddresses();
- while (iaenum.hasMoreElements() && !result) {
- InetAddress ia = iaenum.nextElement();
- result = ia.equals(address);
- }
+ public static boolean isLocalAddress(InetAddress address) throws SocketException {
+ final Enumeration<NetworkInterface> itfs = NetworkInterface.getNetworkInterfaces();
+ while (itfs.hasMoreElements()) {
+ final NetworkInterface itf = itfs.nextElement();
+ final Enumeration<InetAddress> iaenum = itf.getInetAddresses();
+ while (iaenum.hasMoreElements()) {
+ final InetAddress ia = iaenum.nextElement();
+ if (ia.equals(address)) {
+ return true;
}
- } catch (SocketException e) {
}
}
- return result;
+ return false;
}
/**
Sorry for the + and - from the diff output that have been transformed into bullets