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); 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) {