You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2012/02/03 00:18:46 UTC
git commit: Allow OutboundTcpConnectionPool to bind any interface.
Patch by brandonwilliams, reviewed by Vijay for CASSANDRA-3839
Updated Branches:
refs/heads/cassandra-1.1 a7f1e7a62 -> cba4087cf
Allow OutboundTcpConnectionPool to bind any interface.
Patch by brandonwilliams, reviewed by Vijay for CASSANDRA-3839
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cba4087c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cba4087c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cba4087c
Branch: refs/heads/cassandra-1.1
Commit: cba4087cf696e6520082313bc575d88858f5e260
Parents: a7f1e7a
Author: Brandon Williams <br...@apache.org>
Authored: Thu Feb 2 17:08:59 2012 -0600
Committer: Brandon Williams <br...@apache.org>
Committed: Thu Feb 2 17:08:59 2012 -0600
----------------------------------------------------------------------
src/java/org/apache/cassandra/config/Config.java | 12 ++++++++++++
.../cassandra/net/OutboundTcpConnectionPool.java | 11 +++++++++--
.../org/apache/cassandra/security/SSLFactory.java | 10 ++++++++++
3 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/cba4087c/src/java/org/apache/cassandra/config/Config.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java
index 030bdd1..42a71a4 100644
--- a/src/java/org/apache/cassandra/config/Config.java
+++ b/src/java/org/apache/cassandra/config/Config.java
@@ -134,6 +134,18 @@ public class Config
public int row_cache_keys_to_save = Integer.MAX_VALUE;
public String row_cache_provider = ConcurrentLinkedHashCacheProvider.class.getSimpleName();
+ private static boolean outboundBindAny = false;
+
+ public static boolean getOutboundBindAny()
+ {
+ return outboundBindAny;
+ }
+
+ public static void setOutboundBindAny(boolean value)
+ {
+ outboundBindAny = value;
+ }
+
public static enum CommitLogSync {
periodic,
batch
http://git-wip-us.apache.org/repos/asf/cassandra/blob/cba4087c/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
index a75dafe..1bf28b5 100644
--- a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
+++ b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
@@ -23,6 +23,7 @@ import java.net.InetAddress;
import java.net.Socket;
import org.apache.cassandra.concurrent.Stage;
+import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.locator.IEndpointSnitch;
import org.apache.cassandra.security.SSLFactory;
@@ -77,11 +78,17 @@ public class OutboundTcpConnectionPool
// zero means 'bind on any available port.'
if (isEncryptedChannel())
{
- return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort(), FBUtilities.getLocalAddress(), 0);
+ if (Config.getOutboundBindAny())
+ return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort());
+ else
+ return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort(), FBUtilities.getLocalAddress(), 0);
}
else
{
- return new Socket(endPoint(), DatabaseDescriptor.getStoragePort(), FBUtilities.getLocalAddress(), 0);
+ if (Config.getOutboundBindAny())
+ return new Socket(endPoint(), DatabaseDescriptor.getStoragePort());
+ else
+ return new Socket(endPoint(), DatabaseDescriptor.getStoragePort(), FBUtilities.getLocalAddress(), 0);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/cba4087c/src/java/org/apache/cassandra/security/SSLFactory.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/security/SSLFactory.java b/src/java/org/apache/cassandra/security/SSLFactory.java
index 82a97d7..794f7d9 100644
--- a/src/java/org/apache/cassandra/security/SSLFactory.java
+++ b/src/java/org/apache/cassandra/security/SSLFactory.java
@@ -71,6 +71,16 @@ public final class SSLFactory
return socket;
}
+ /** Create a socket and connect, using any local address */
+ public static SSLSocket getSocket(EncryptionOptions options, InetAddress address, int port) throws IOException
+ {
+ SSLContext ctx = createSSLContext(options);
+ SSLSocket socket = (SSLSocket) ctx.getSocketFactory().createSocket(address, port);
+ String[] suits = filterCipherSuites(socket.getSupportedCipherSuites(), options.cipher_suites);
+ socket.setEnabledCipherSuites(suits);
+ return socket;
+ }
+
/** Just create a socket */
public static SSLSocket getSocket(EncryptionOptions options) throws IOException
{