From bd99305cb371e527676eed50777981a54eb59893 Mon Sep 17 00:00:00 2001 From: Arunan Date: Thu, 30 Jul 2020 17:37:08 +0530 Subject: [PATCH 1/2] Fix server trying to close the SSLsession in a loop Related to https://github.com/AdoptOpenJDK/openjdk-jdk11u/commit/8d1b63a4db2c6348a97b3cf45bd4d2caa7cad6b5 --- .../java/org/apache/http/nio/reactor/ssl/SSLIOSession.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java b/modules/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java index 2fc6e8350..2d43b545b 100644 --- a/modules/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java +++ b/modules/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java @@ -336,7 +336,11 @@ private void updateEventMask() { newMask = EventMask.READ; break; case NOT_HANDSHAKING: - newMask = this.appEventMask; + if (!(status == CLOSING && !isInboundDone() && isOutboundDone())) { + newMask = this.appEventMask; + } else { + newMask = EventMask.READ; + } break; case NEED_TASK: break; From 0c0ef149ac96d521ce628fa25a1279221b85255f Mon Sep 17 00:00:00 2001 From: Nirothipan Date: Sat, 1 Aug 2020 09:40:34 +0530 Subject: [PATCH 2/2] Update fix bd99305cb371e527676eed50777981a54eb59893 If the status is closing and outbound is done we don't need to care about inbound and can proceed to read only --- .../java/org/apache/http/nio/reactor/ssl/SSLIOSession.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java b/modules/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java index 2d43b545b..761877ec3 100644 --- a/modules/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java +++ b/modules/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java @@ -336,10 +336,10 @@ private void updateEventMask() { newMask = EventMask.READ; break; case NOT_HANDSHAKING: - if (!(status == CLOSING && !isInboundDone() && isOutboundDone())) { - newMask = this.appEventMask; - } else { + if (this.status >= CLOSING && isOutboundDone()) { newMask = EventMask.READ; + } else { + newMask = this.appEventMask; } break; case NEED_TASK: