From e349126d23ab22a1ef0640277bb672d63e6dd27b Mon Sep 17 00:00:00 2001
From: Chris Ridd <chris.ridd@forgerock.com>
Date: Mon, 22 Sep 2014 10:10:09 +0000
Subject: [PATCH] OPENDJ-1565 CR-4564: Optionally bind to a local address

---
 opends/src/server/org/opends/server/replication/service/ReplicationBroker.java |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java b/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
index 3f85b22..7ef8a67 100644
--- a/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
+++ b/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
@@ -30,10 +30,7 @@
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
-import java.net.ConnectException;
-import java.net.Socket;
-import java.net.SocketException;
-import java.net.SocketTimeoutException;
+import java.net.*;
 import java.util.*;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentSkipListMap;
@@ -1088,6 +1085,11 @@
       socket = new Socket();
       socket.setReceiveBufferSize(1000000);
       socket.setTcpNoDelay(true);
+      if (config.getSourceAddress() != null)
+      {
+        InetSocketAddress local = new InetSocketAddress(config.getSourceAddress(), 0);
+        socket.bind(local);
+      }
       int timeoutMS = MultimasterReplication.getConnectionTimeoutMS();
       socket.connect(HostPort.valueOf(serverURL).toInetSocketAddress(), timeoutMS);
       newSession = replSessionSecurity.createClientSession(socket, timeoutMS);

--
Gitblit v1.10.0