diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContentProducer.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContentProducer.java index 9d237abb2424..deab8243f0fd 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContentProducer.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContentProducer.java @@ -219,48 +219,37 @@ public void reclaim(HttpInput.Content content) public boolean isReady() { HttpInput.Content content = nextTransformedContent(); - if (content == null) + if (content != null) { - _httpChannel.getState().onReadUnready(); - while (true) - { - if (_httpChannel.needContent()) - { - content = nextTransformedContent(); - if (LOG.isDebugEnabled()) - LOG.debug("isReady got transformed content after needContent retry {} {}", content, this); - if (content != null) - { - _httpChannel.getState().onContentAdded(); - break; - } - else - { - // We could have read some rawContent but not enough to generate - // transformed content, so we need to call needContent() again - // to tell the channel that more content is needed. - if (LOG.isDebugEnabled()) - LOG.debug("isReady could not transform content after needContent retry {}", this); - } - } - else - { - if (LOG.isDebugEnabled()) - LOG.debug("isReady false needContent retry {}", this); - break; - } - } + if (LOG.isDebugEnabled()) + LOG.debug("isReady(), got transformed content {} {}", content, this); + _httpChannel.getState().onContentAdded(); + return true; } - else + + _httpChannel.getState().onReadUnready(); + while (_httpChannel.needContent()) { + content = nextTransformedContent(); if (LOG.isDebugEnabled()) - LOG.debug("isReady got transformed content {} {}", content, this); - _httpChannel.getState().onContentAdded(); + LOG.debug("isReady(), got transformed content after needContent retry {} {}", content, this); + if (content != null) + { + _httpChannel.getState().onContentAdded(); + return true; + } + else + { + // We could have read some rawContent but not enough to generate + // transformed content, so we need to call needContent() again + // to tell the channel that more content is needed. + if (LOG.isDebugEnabled()) + LOG.debug("isReady(), could not transform content after needContent retry {}", this); + } } - boolean ready = content != null; if (LOG.isDebugEnabled()) - LOG.debug("isReady = {}", ready); - return ready; + LOG.debug("isReady(), no content for needContent retry {}", this); + return false; } private HttpInput.Content nextTransformedContent()