From 86ad6a08499797f9b3204896caee947abb03394f Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Mon, 07 Nov 2016 13:59:40 +0000
Subject: [PATCH] OPENDJ-3179: Migrate LDAP Connection Handler to SDK Grizzly transport

---
 opendj-server-legacy/src/main/java/org/forgerock/opendj/reactive/LDAPConnectionHandler2.java |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/forgerock/opendj/reactive/LDAPConnectionHandler2.java b/opendj-server-legacy/src/main/java/org/forgerock/opendj/reactive/LDAPConnectionHandler2.java
index 753c8da..8127e01 100644
--- a/opendj-server-legacy/src/main/java/org/forgerock/opendj/reactive/LDAPConnectionHandler2.java
+++ b/opendj-server-legacy/src/main/java/org/forgerock/opendj/reactive/LDAPConnectionHandler2.java
@@ -53,9 +53,11 @@
 import org.forgerock.opendj.ldap.AddressMask;
 import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.LDAPClientContext;
+import org.forgerock.opendj.ldap.LDAPClientContext.DisconnectListener;
 import org.forgerock.opendj.ldap.LDAPListener;
 import org.forgerock.opendj.ldap.LdapException;
 import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.requests.UnbindRequest;
 import org.forgerock.opendj.ldap.responses.Response;
 import org.forgerock.opendj.ldap.spi.LdapMessages.LdapRawMessage;
 import org.forgerock.opendj.server.config.server.ConnectionHandlerCfg;
@@ -646,6 +648,24 @@
                     public ReactiveHandler<LDAPClientContext, LdapRawMessage, Stream<Response>> apply(
                             LDAPClientContext clientContext) throws LdapException {
                         final LDAPClientConnection2 conn = canAccept(clientContext);
+                        connectionList.add(conn);
+                        clientContext.onDisconnect(new DisconnectListener() {
+                            @Override
+                            public void exceptionOccurred(LDAPClientContext context, Throwable error) {
+                                connectionList.remove(conn);
+                            }
+
+                            @Override
+                            public void connectionDisconnected(LDAPClientContext context, ResultCode resultCode,
+                                    String diagnosticMessage) {
+                                connectionList.remove(conn);
+                            }
+
+                            @Override
+                            public void connectionClosed(LDAPClientContext context, UnbindRequest unbindRequest) {
+                                connectionList.remove(conn);
+                            }
+                        });
                         return new ReactiveHandler<LDAPClientContext, LdapRawMessage, Stream<Response>>() {
                             @Override
                             public Single<Stream<Response>> handle(LDAPClientContext context, LdapRawMessage request)
@@ -798,7 +818,7 @@
 
         if (useSSL()) {
             try {
-                clientContext.enableTLS(createSSLEngine());
+                clientContext.enableTLS(createSSLEngine(), false);
             } catch (DirectoryException e) {
                 throw LdapException.newLdapException(e.getResultCode(), e);
             }

--
Gitblit v1.10.0