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