diff options
author | Simone Bordet | 2015-02-12 18:43:40 +0000 |
---|---|---|
committer | Simone Bordet | 2015-02-12 18:43:52 +0000 |
commit | 06777355509011b2787f8f2d03ae4354ad89992d (patch) | |
tree | 65040726687b3a787e53928b5d1efcf3c7789252 /jetty-http2/http2-server/src/main | |
parent | f7b9206b2e84a33ccae5bca56e339a06a9eb5ed4 (diff) | |
download | org.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')
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()); |