From d25415845feda671f563c41865a834f8ea28926e Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 29 Nov 2019 15:54:35 +1100 Subject: [PATCH 1/2] Issue #4376 Async Content Complete close after last blocking write Signed-off-by: Greg Wilkins --- .../src/main/java/org/eclipse/jetty/server/HttpOutput.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java index 469b0ffa7cb6..f651179862ab 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java @@ -234,6 +234,8 @@ private void write(ByteBuffer content, boolean complete) throws IOException { write(content, complete, blocker); blocker.block(); + if (complete) + closed(); } catch (Exception failure) { From abb7e3b0aab7262d82932cafce74229196973ff0 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 29 Nov 2019 16:54:42 +1100 Subject: [PATCH 2/2] Issue #4376 Async Content Complete If completion has to do a flush, then we need a call to closed to avoid leaking buffers. Signed-off-by: Greg Wilkins --- .../main/java/org/eclipse/jetty/server/HttpChannelState.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java index 53e302d63113..bf3027591200 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java @@ -968,6 +968,9 @@ protected void completed() } } + // release any aggregate buffer from a closing flush + _channel.getResponse().getHttpOutput().closed(); + if (event != null) { cancelTimeout(event);