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 c51b3ed37123..3e98573abce4 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 @@ -321,17 +321,11 @@ else if (_state == State.CLOSE) LOG.debug("onWriteComplete({},{}) {}->{} c={} cb={} w={}", last, failure, state, stateString(), BufferUtil.toDetailString(closeContent), closedCallback, wake); - if (failure != null) - _channel.abort(failure); - - if (closeContent != null) - { - channelWrite(closeContent, true, new WriteCompleteCB()); - return; - } - try { + if (failure != null) + _channel.abort(failure); + if (closedCallback != null) { if (failure == null) @@ -339,6 +333,10 @@ else if (_state == State.CLOSE) else closedCallback.failed(failure); } + else if (closeContent != null) + { + channelWrite(closeContent, true, new WriteCompleteCB()); + } } finally {