Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2015-02-05 03:27:05 +0000
committerGreg Wilkins2015-02-05 03:27:05 +0000
commitd08fced01065292ea1e48f6d81ac0fcfa5553887 (patch)
tree3b27b2ee1f20f9403ef87f364a102046f6c7bfe2
parent1576c68a529cee00a02e6a4c80528d0f0d631f53 (diff)
downloadorg.eclipse.jetty.project-d08fced01065292ea1e48f6d81ac0fcfa5553887.tar.gz
org.eclipse.jetty.project-d08fced01065292ea1e48f6d81ac0fcfa5553887.tar.xz
org.eclipse.jetty.project-d08fced01065292ea1e48f6d81ac0fcfa5553887.zip
handle slow arriving input
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java29
1 files changed, 21 insertions, 8 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java
index ece4ce7bc0..b1cb67f985 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java
@@ -365,16 +365,29 @@ public abstract class HttpInput<T> extends ServletInputStream implements Runnabl
@Override
public void setReadListener(ReadListener readListener)
{
- readListener = Objects.requireNonNull(readListener);
- synchronized (lock())
+ try
{
- if (_contentState != STREAM)
- throw new IllegalStateException("state=" + _contentState);
- _contentState = ASYNC;
- _listener = readListener;
- _notReady = true;
+ readListener = Objects.requireNonNull(readListener);
+ boolean content;
+ synchronized (lock())
+ {
+ if (_contentState != STREAM)
+ throw new IllegalStateException("state=" + _contentState);
+ _contentState = ASYNC;
+ _listener = readListener;
+ _notReady = true;
+
+ content = getNextContent()!=null;
+ }
+ if (content)
+ _channelState.onReadPossible();
+ else
+ unready();
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeIOException(e);
}
- _channelState.onReadPossible();
}
public void failed(Throwable x)

Back to the top