[
https://issues.apache.org/activemq/browse/AMQ-2094?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Colin MacNaughton reopened AMQ-2094:
------------------------------------
I was running some testing with 5.3 today and noticed that specifying localhost
no longer binds to 0.0.0.0 (meaning that folks who have configured their
brokers to be accessible from other hosts via localhost will no longer be able
to connect). From looking at the issue, it seems like the more appropriate fix
would be:
localhost --> bind to 0.0.0.0 (e.g. still bind to wildcard)
127.0.0.1 --> bind to 127.0.0.0 (only loopback)
actual host name --> bind to actual ip
host = (host == null || host.length() == 0) ? "localhost" : host;
InetAddress addr = InetAddress.getByName(host);
try {
if (host.trim().equals("localhost")) {
this.serverSocket =
serverSocketFactory.createServerSocket(bind.getPort(), backlog);
addr = InetAddress.getLocalHost();
} else {
this.serverSocket =
serverSocketFactory.createServerSocket(bind.getPort(), backlog, addr);
}
configureServerSocket(this.serverSocket);
}
The question is would the ability of specifying 127.0.0.1 explicitly without it
resolving to 0.0.0.0 be enough to resolve this?
> Can't bind the connector to localhost or actuall IP correctly.
> --------------------------------------------------------------
>
> Key: AMQ-2094
> URL: https://issues.apache.org/activemq/browse/AMQ-2094
> Project: ActiveMQ
> Issue Type: Bug
> Components: Geronimo Integration
> Affects Versions: 4.1.2, 5.2.0
> Environment: Windows XP + SUN JDK 1.5
> Reporter: Shawn Jiang
> Assignee: David Jencks
> Fix For: 5.3.0
>
> Attachments: AMQ-2094.patch
>
>
> ActiveMQ server socket created with TcpTransportServer can't bind to
> localhost or actuall IP correctly.
> * expected result:
> ** localhost ---> bind to 127.0.0.1
> ** actual IP ----> bind to actual IP
> * actual result:
> ** localhost ---> bind to 0.0.0.0
> ** actual IP ----> bind to 0.0.0.0
> {code:title="org.apache.activemq.transport.tcp.TcpTransportServer"}
> InetAddress addr = InetAddress.getByName(host);
> try {
> if (host.trim().equals("localhost") || \
> addr.equals(InetAddress.getLocalHost())) { //#1 start the socket with 0.0.0.0
> this.serverSocket = \
> serverSocketFactory.createServerSocket(bind.getPort(), backlog); }
> else {
> //#2 start the socket with the ip spcified in addr.
> this.serverSocket = \
> serverSocketFactory.createServerSocket(bind.getPort(), backlog, addr); }
> {code}
> Since if you config the real IP as a host setting, \
> addr.equals(InetAddress.getLocalHost()) will allways be true so that the #1
> will be used to start the socket with 0.0.0.0 by default. Which causes a
> defect of geronimo: https://issues.apache.org/jira/browse/GERONIMO-4404
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.