summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2012-03-05 13:39:16 +0000
committerRobert Godfrey <rgodfrey@apache.org>2012-03-05 13:39:16 +0000
commit5f11e02a4b84add39a2975f225dd6718475509f6 (patch)
treeb08cbfd3feeb7832d25c15c70636343a21fa1e0b
parent72fbdde19131959f80e686079254a48600ec25f5 (diff)
downloadqpid-python-5f11e02a4b84add39a2975f225dd6718475509f6.tar.gz
QPID-3408 : Fix the Java Broker code so it both copes with machines where IPv6 is present, but disabled, and does not open a random port to get a wildcard address
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1297049 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/Broker.java16
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerNetworkTransportConfiguration.java18
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkTransportConfiguration.java4
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java2
4 files changed, 27 insertions, 13 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/Broker.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/Broker.java
index d9929fc85b..263b7fe40a 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/Broker.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/Broker.java
@@ -192,7 +192,7 @@ public class Broker
InetAddress bindAddress;
if (bindAddr.equals(WILDCARD_ADDRESS))
{
- bindAddress = new InetSocketAddress(0).getAddress();
+ bindAddress = null;
}
else
{
@@ -205,18 +205,21 @@ public class Broker
{
for(int port : ports)
{
+ final InetSocketAddress inetSocketAddress = new InetSocketAddress(bindAddress, port);
+
final Set<AmqpProtocolVersion> supported =
getSupportedVersions(port, exclude_0_10, exclude_0_9_1, exclude_0_9, exclude_0_8, serverConfig);
final NetworkTransportConfiguration settings =
- new ServerNetworkTransportConfiguration(serverConfig, port, bindAddress.getHostName(), Transport.TCP);
+ new ServerNetworkTransportConfiguration(serverConfig, inetSocketAddress, Transport.TCP);
final IncomingNetworkTransport transport = Transport.getIncomingTransportInstance();
final MultiVersionProtocolEngineFactory protocolEngineFactory =
new MultiVersionProtocolEngineFactory(supported, defaultSupportedProtocolReply);
transport.accept(settings, protocolEngineFactory, null);
- ApplicationRegistry.getInstance().addAcceptor(new InetSocketAddress(bindAddress, port),
+
+ ApplicationRegistry.getInstance().addAcceptor(inetSocketAddress,
new QpidAcceptor(transport,"TCP"));
CurrentActor.get().message(BrokerMessages.LISTENING("TCP", port));
}
@@ -231,17 +234,20 @@ public class Broker
for(int sslPort : sslPorts)
{
+ final InetSocketAddress inetSocketAddress = new InetSocketAddress(bindAddress, sslPort);
+
final Set<AmqpProtocolVersion> supported =
getSupportedVersions(sslPort, exclude_0_10, exclude_0_9_1, exclude_0_9, exclude_0_8, serverConfig);
final NetworkTransportConfiguration settings =
- new ServerNetworkTransportConfiguration(serverConfig, sslPort, bindAddress.getHostName(), Transport.TCP);
+ new ServerNetworkTransportConfiguration(serverConfig, inetSocketAddress, Transport.TCP);
final IncomingNetworkTransport transport = Transport.getIncomingTransportInstance();
final MultiVersionProtocolEngineFactory protocolEngineFactory =
new MultiVersionProtocolEngineFactory(supported, defaultSupportedProtocolReply);
transport.accept(settings, protocolEngineFactory, sslContext);
- ApplicationRegistry.getInstance().addAcceptor(new InetSocketAddress(bindAddress, sslPort),
+
+ ApplicationRegistry.getInstance().addAcceptor(inetSocketAddress,
new QpidAcceptor(transport,"TCP"));
CurrentActor.get().message(BrokerMessages.LISTENING("TCP/SSL", sslPort));
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerNetworkTransportConfiguration.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerNetworkTransportConfiguration.java
index 81dfcb4465..f6fe47b996 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerNetworkTransportConfiguration.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerNetworkTransportConfiguration.java
@@ -19,22 +19,21 @@
*/
package org.apache.qpid.server.configuration;
+import java.net.InetSocketAddress;
import org.apache.qpid.transport.NetworkTransportConfiguration;
public class ServerNetworkTransportConfiguration implements NetworkTransportConfiguration
{
private final ServerConfiguration _serverConfig;
- private final int _port;
- private final String _host;
private final String _transport;
+ private InetSocketAddress _address;
public ServerNetworkTransportConfiguration(final ServerConfiguration serverConfig,
- final int port, final String host,
+ final InetSocketAddress address,
final String transport)
{
_serverConfig = serverConfig;
- _port = port;
- _host = host;
+ _address = address;
_transport = transport;
}
@@ -55,12 +54,12 @@ public class ServerNetworkTransportConfiguration implements NetworkTransportConf
public Integer getPort()
{
- return _port;
+ return _address.getPort();
}
public String getHost()
{
- return _host;
+ return _address.getHostName();
}
public String getTransport()
@@ -72,4 +71,9 @@ public class ServerNetworkTransportConfiguration implements NetworkTransportConf
{
return _serverConfig.getConnectorProcessors();
}
+
+ public InetSocketAddress getAddress()
+ {
+ return _address;
+ }
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkTransportConfiguration.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkTransportConfiguration.java
index 8d3f7a779a..472beb6bb1 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkTransportConfiguration.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkTransportConfiguration.java
@@ -20,6 +20,8 @@
*/
package org.apache.qpid.transport;
+import java.net.InetSocketAddress;
+
/**
* This interface provides a means for NetworkDrivers to configure TCP options such as incoming and outgoing
* buffer sizes and set particular options on the socket. NetworkDrivers should honour the values returned
@@ -43,4 +45,6 @@ public interface NetworkTransportConfiguration
String getTransport();
Integer getConnectorProcessors();
+
+ InetSocketAddress getAddress();
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
index 387777a80c..42c8334a5d 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
@@ -157,7 +157,7 @@ public class IoNetworkTransport implements OutgoingNetworkTransport, IncomingNet
_factory = factory;
_sslContext = sslContext;
- InetSocketAddress address = new InetSocketAddress(config.getHost(), config.getPort());
+ InetSocketAddress address = config.getAddress();
if(sslContext == null)
{