From d927b1c3a2f387982bf872785fd16f913c4dc63f Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 07 Feb 2012 23:09:17 +0000
Subject: [PATCH] Partial fix for OPENDJ-422: Concurrent writes of large LDAP messages can become interleaved

---
 opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java b/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java
index 9624463..8894e8c 100644
--- a/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java
+++ b/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java
@@ -30,6 +30,7 @@
 
 
 
+import static com.forgerock.opendj.ldap.SynchronizedConnection.synchronizeConnection;
 import static org.forgerock.opendj.ldap.ErrorResultException.newErrorResult;
 
 import java.io.IOException;
@@ -68,7 +69,7 @@
 final class LDAPConnection extends AbstractAsynchronousConnection implements
     Connection
 {
-  private final org.glassfish.grizzly.Connection<?> connection;
+  private final SynchronizedConnection<?> connection;
   private Result connectionInvalidReason;
   private FilterChain customFilterChain;
   private boolean isClosed = false;
@@ -96,7 +97,8 @@
   LDAPConnection(final org.glassfish.grizzly.Connection<?> connection,
       final LDAPOptions options)
   {
-    this.connection = connection;
+    // FIXME: remove synchronization when OPENDJ-422 is resolved.
+    this.connection = synchronizeConnection(connection);
     this.options = options;
   }
 
@@ -1047,7 +1049,8 @@
         : cipherSuites.toArray(new String[cipherSuites.size()]));
     sslFilter = new SSLFilter(null, sslEngineConfigurator);
     installFilter(sslFilter);
-    sslFilter.handshake(connection, completionHandler);
+    sslFilter.handshake(connection.getUnsynchronizedConnection(),
+        completionHandler);
   }
 
 

--
Gitblit v1.10.0