From f38881bd757d7a30857ae4e12bbdc7b81338b6bf Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 14 Jun 2013 18:06:16 +0000
Subject: [PATCH] Fix OPENDJ-932: ConnectionFactory timeout setting is applied for persistent search requests

---
 opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPSearchFutureResultImpl.java |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPSearchFutureResultImpl.java b/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPSearchFutureResultImpl.java
index 2c98e0c..39f2022 100644
--- a/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPSearchFutureResultImpl.java
+++ b/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPSearchFutureResultImpl.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2009-2010 Sun Microsystems, Inc.
- *      Portions copyright 2011 ForgeRock AS.
+ *      Portions copyright 2011-2013 ForgeRock AS.
  */
 
 package com.forgerock.opendj.ldap;
@@ -31,6 +31,7 @@
 import org.forgerock.opendj.ldap.IntermediateResponseHandler;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchResultHandler;
+import org.forgerock.opendj.ldap.controls.PersistentSearchRequestControl;
 import org.forgerock.opendj.ldap.requests.SearchRequest;
 import org.forgerock.opendj.ldap.responses.Responses;
 import org.forgerock.opendj.ldap.responses.Result;
@@ -42,10 +43,9 @@
  */
 final class LDAPSearchFutureResultImpl extends AbstractLDAPFutureResultImpl<Result> implements
         SearchResultHandler {
-
     private SearchResultHandler searchResultHandler;
-
     private final SearchRequest request;
+    private final boolean isPersistentSearch;
 
     LDAPSearchFutureResultImpl(final int requestID, final SearchRequest request,
             final SearchResultHandler resultHandler,
@@ -54,6 +54,7 @@
         super(requestID, resultHandler, intermediateResponseHandler, connection);
         this.request = request;
         this.searchResultHandler = resultHandler;
+        this.isPersistentSearch = request.containsControl(PersistentSearchRequestControl.OID);
     }
 
     public boolean handleEntry(final SearchResultEntry entry) {
@@ -103,13 +104,18 @@
         return request;
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     Result newErrorResult(final ResultCode resultCode, final String diagnosticMessage,
             final Throwable cause) {
         return Responses.newResult(resultCode).setDiagnosticMessage(diagnosticMessage).setCause(
                 cause);
     }
+
+    /**
+     * Persistent searches should not time out.
+     */
+    @Override
+    boolean checkForTimeout() {
+        return !isPersistentSearch;
+    }
 }

--
Gitblit v1.10.0