Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimone Bordet2015-02-12 18:43:40 +0000
committerSimone Bordet2015-02-12 18:43:52 +0000
commit06777355509011b2787f8f2d03ae4354ad89992d (patch)
tree65040726687b3a787e53928b5d1efcf3c7789252 /jetty-http2/http2-server/src/main
parentf7b9206b2e84a33ccae5bca56e339a06a9eb5ed4 (diff)
downloadorg.eclipse.jetty.project-06777355509011b2787f8f2d03ae4354ad89992d.tar.gz
org.eclipse.jetty.project-06777355509011b2787f8f2d03ae4354ad89992d.tar.xz
org.eclipse.jetty.project-06777355509011b2787f8f2d03ae4354ad89992d.zip
Simplified HTTP/2 parser and its listener.
It is not possible to perform asynchronous processing of the content of DATA frames, because otherwise the parser has to stop, stalling all other streams. Parser.Listener methods were returning boolean in a vestigial attempt to handle asynchronous data processing, and have now been converted to return void.
Diffstat (limited to 'jetty-http2/http2-server/src/main')
-rw-r--r--jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerSession.java9
-rw-r--r--jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java5
2 files changed, 7 insertions, 7 deletions
diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerSession.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerSession.java
index 765acd76fd..3c391503fa 100644
--- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerSession.java
+++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerSession.java
@@ -54,7 +54,7 @@ public class HTTP2ServerSession extends HTTP2Session implements ServerParser.Lis
}
@Override
- public boolean onPreface()
+ public void onPreface()
{
// SPEC: send a SETTINGS frame upon receiving the preface.
Map<Integer, Integer> settings = notifyPreface(this);
@@ -63,11 +63,10 @@ public class HTTP2ServerSession extends HTTP2Session implements ServerParser.Lis
SettingsFrame frame = new SettingsFrame(settings, false);
// TODO: consider sending a WINDOW_UPDATE to enlarge the session send window of the client.
control(null, Callback.Adapter.INSTANCE, frame, Frame.EMPTY_ARRAY);
- return false;
}
@Override
- public boolean onHeaders(HeadersFrame frame)
+ public void onHeaders(HeadersFrame frame)
{
MetaData metaData = frame.getMetaData();
if (metaData.isRequest())
@@ -87,14 +86,12 @@ public class HTTP2ServerSession extends HTTP2Session implements ServerParser.Lis
{
onConnectionFailure(ErrorCode.INTERNAL_ERROR.code, "invalid_request");
}
- return false;
}
@Override
- public boolean onPushPromise(PushPromiseFrame frame)
+ public void onPushPromise(PushPromiseFrame frame)
{
onConnectionFailure(ErrorCode.PROTOCOL_ERROR.code, "push_promise");
- return false;
}
private Map<Integer, Integer> notifyPreface(Session session)
diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java
index 8087307c60..4e33694591 100644
--- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java
+++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java
@@ -146,7 +146,10 @@ public class HttpChannelOverHTTP2 extends HttpChannel
public void requestContent(DataFrame frame, final Callback callback)
{
- // We must copy the data since we do not know when its bytes will be consumed.
+ // We must copy the data since we do not know when the
+ // application will consume its bytes (we queue them by
+ // calling onContent()), and we cannot stop the parsing
+ // since there may be frames for other streams.
final ByteBufferPool byteBufferPool = getByteBufferPool();
ByteBuffer original = frame.getData();
final ByteBuffer copy = byteBufferPool.acquire(original.remaining(), original.isDirect());

Back to the top