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