From 9bb016496b6e3594f3555f6b1bb80ceadb6cbba5 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 01 Aug 2013 10:38:29 +0000
Subject: [PATCH] Fix OPENDJ-1105: Rest2LDAP never returns a response when invalid parameters or content are provided on Jetty 8

---
 opendj3/opendj-rest2ldap-servlet/src/main/java/org/forgerock/opendj/rest2ldap/servlet/Rest2LDAPAuthnFilter.java |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/opendj3/opendj-rest2ldap-servlet/src/main/java/org/forgerock/opendj/rest2ldap/servlet/Rest2LDAPAuthnFilter.java b/opendj3/opendj-rest2ldap-servlet/src/main/java/org/forgerock/opendj/rest2ldap/servlet/Rest2LDAPAuthnFilter.java
index 6e6fbd5..28b2ef2 100644
--- a/opendj3/opendj-rest2ldap-servlet/src/main/java/org/forgerock/opendj/rest2ldap/servlet/Rest2LDAPAuthnFilter.java
+++ b/opendj3/opendj-rest2ldap-servlet/src/main/java/org/forgerock/opendj/rest2ldap/servlet/Rest2LDAPAuthnFilter.java
@@ -446,6 +446,17 @@
                         if (sync.isAsync()) {
                             try {
                                 chain.doFilter(request, response);
+
+                                /*
+                                 * Fix for OPENDJ-1105: Jetty 8 a bug where
+                                 * synchronous downstream completion (i.e. in
+                                 * the servlet) is ignored due to upstream
+                                 * active async context. The following code
+                                 * should be benign in other containers.
+                                 */
+                                if (response.isCommitted()) {
+                                    sync.signalAndComplete();
+                                }
                             } catch (Throwable t) {
                                 sync.signalAndComplete(asResourceException(t));
                             }

--
Gitblit v1.10.0