Casey Marshall created CASSANDRA-9309:
-----------------------------------------

             Summary: Wrong interpretation of Config.getOutboundBindAny 
depending on using SSL or not
                 Key: CASSANDRA-9309
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9309
             Project: Cassandra
          Issue Type: Bug
            Reporter: Casey Marshall


In function OutboundTcpConnectionPool.newSocket(), it appears the binding 
behavior of client sockets is different depending on the encryption setting.

If encryption is enabled, and Config.getOutboundBindAny() is true, then no 
address is passed to SSLFactory.getSocket (so I assume it binds to any address).

If encryption is enabled, and Config.getOutboundBindAny() is false, then 
FBUtilities.getLocalAddress() is passed to SSLFactory.getSocket (so I assume 
the new socket will be bound to that address).

If encryption is disabled, and Config.getOutboundBindAny() is true (and 
socket.isBound() returns false) then the socket is bound to 
FBUtilities.getLocalAddress().

If encryption is disabled, and Config.getOutboundBindAny() is false, the socket 
is not bound.

The case of encryption disabled appears to be wrong, and the 
Config.getOutboundBindAny() flag gets inverted depending on the encryption 
setting. Shouldn't

{code}
if (Config.getOutboundBindAny() && !socket.isBound())
{code}

be this:

{code}
if (!Config.getOutboundBindAny() && !socket.isBound())
{code}

This is in my copy of the 2.0.11 tag, and appears to be the same in trunk.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to