From 93b66e078bb0cffd14816c082eb0923f665fc279 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Fri, 25 Nov 2016 16:49:34 +0000
Subject: [PATCH] Minor fix: throw IllegalStateException on multiple subscriber.

---
 opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LDAPServerFilter.java |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LDAPServerFilter.java b/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LDAPServerFilter.java
index 723fdb6..7c91eeb 100644
--- a/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LDAPServerFilter.java
+++ b/opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/LDAPServerFilter.java
@@ -347,6 +347,19 @@
                 @Override
                 public void subscribe(final Subscriber<? super LdapRequestEnvelope> subscriber) {
                     if (downstream != null) {
+                        // https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.0/README.md#specification
+                        // #1.9: ... the only legal way to signal failure (or reject the Subscriber) is by calling
+                        // onError (after calling onSubscribe).
+                        subscriber.onSubscribe(new Subscription() {
+                            @Override
+                            public void request(long n) {
+                            }
+
+                            @Override
+                            public void cancel() {
+                            }
+                        });
+                        subscriber.onError(new IllegalStateException("read() cannot be subscribed multiple times"));
                         return;
                     }
                     downstream = new GrizzlyBackpressureSubscription(subscriber);

--
Gitblit v1.10.0