private void writeHeadersFrame( final ChannelHandlerContext ctx, Http2HeadersFrame headersFrame, final ChannelPromise promise) { if (isStreamIdValid(headersFrame.stream().id())) { encoder().writeHeaders(ctx, headersFrame.stream().id(), headersFrame.headers(), headersFrame.padding(), headersFrame.isEndStream(), promise); } else { final DefaultHttp2FrameStream stream = (DefaultHttp2FrameStream) headersFrame.stream(); final Http2Connection connection = connection(); final int streamId = connection.local().incrementAndGetNextStreamId(); encoder().writeHeaders(ctx, streamId, headersFrame.headers(), headersFrame.padding(), headersFrame.isEndStream(), writePromise); if (writePromise.isDone()) { notifyHeaderWritePromise(writePromise, promise);
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof Http2StreamFrame) { // Handle HTTP/2 clear text upgrade request if (msg instanceof Http2HeadersFrame) { Http2HeadersFrame frame = (Http2HeadersFrame) msg; connection.onHeadersRead(ctx, 1, frame.headers(), frame.padding(), frame.isEndStream()); } else if (msg instanceof Http2DataFrame) { Http2DataFrame frame = (Http2DataFrame) msg; connection.onDataRead(ctx, 1, frame.content(), frame.padding(), frame.isEndStream()); } } else { super.channelRead(ctx, msg); } }
String path = http2Headers.headers().path().toString(); baseUri, requestUri, http2Headers.headers().method().toString(), getSecurityContext(), new PropertiesDelegate() { if (!http2Headers.isEndStream()) { for (CharSequence name : http2Headers.headers().names()) { requestContext.headers(name.toString(), mapToString(http2Headers.headers().getAll(name)));
if (frame instanceof Http2HeadersFrame) { Http2HeadersFrame headersFrame = (Http2HeadersFrame) frame; Http2Headers headers = headersFrame.headers(); Http2FrameStream stream = headersFrame.stream(); int id = stream == null ? 0 : stream.id(); if (headersFrame.isEndStream()) { if (headers.method() == null && status == null) { LastHttpContent last = new DefaultLastHttpContent(Unpooled.EMPTY_BUFFER, validateHeaders);
protected boolean isEndOfRequestResponse(Object msg) { if (msg instanceof Http2HeadersFrame) { return ((Http2HeadersFrame) msg).isEndStream(); } if (msg instanceof Http2DataFrame) { return ((Http2DataFrame) msg).isEndStream(); } return false; }
if (!headersFrame.headers().method().equals(HttpMethod.HEAD.asciiName()) && (contentLength > 0 || contentLength == -1)) {
if (frame instanceof Http2HeadersFrame) { Http2HeadersFrame headersFrame = (Http2HeadersFrame) frame; Http2Headers headers = headersFrame.headers(); Http2FrameStream stream = headersFrame.stream(); int id = stream == null ? 0 : stream.id(); if (headersFrame.isEndStream()) { if (headers.method() == null && status == null) { LastHttpContent last = new DefaultLastHttpContent(Unpooled.EMPTY_BUFFER, validateHeaders);
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof Http2HeadersFrame) { Http2HeadersFrame headersFrame = (Http2HeadersFrame)msg; HttpRequest request; if (headersFrame.isEndStream()) { request = HttpConversionUtil.toFullHttpRequest(-1, headersFrame.headers(), ctx.channel().alloc(), false); } else { request = HttpConversionUtil.toHttpRequest(-1, headersFrame.headers(), false); } HttpToH2Operations ops = new HttpToH2Operations(Connection.from(ctx.channel()), listener, request, headersFrame.headers(), ConnectionInfo.from(ctx.channel() .parent(), readForwardHeaders, request), cookieEncoder, cookieDecoder); ops.bind(); listener.onStateChange(ops, ConnectionObserver.State.CONFIGURED); } ctx.fireChannelRead(msg); }
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof Http2StreamFrame) { // Handle HTTP/2 clear text upgrade request if (msg instanceof Http2HeadersFrame) { Http2HeadersFrame frame = (Http2HeadersFrame) msg; connection.onHeadersRead(ctx, 1, frame.headers(), frame.padding(), frame.isEndStream()); } else if (msg instanceof Http2DataFrame) { Http2DataFrame frame = (Http2DataFrame) msg; connection.onDataRead(ctx, 1, frame.content(), frame.padding(), frame.isEndStream()); } } else { super.channelRead(ctx, msg); } }
protected boolean isEndOfRequestResponse(Object msg) { if (msg instanceof Http2HeadersFrame) { return ((Http2HeadersFrame) msg).isEndStream(); } if (msg instanceof Http2DataFrame) { return ((Http2DataFrame) msg).isEndStream(); } return false; }
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof Http2HeadersFrame){ final Http2HeadersFrame requestHeaders = (Http2HeadersFrame) msg; final SocketChannel channel = (SocketChannel) ctx.channel() .parent(); final Http2Headers headers = requestHeaders.headers(); accessLog = new AccessLog() .address(channel.remoteAddress().getHostString()) .port(channel.localAddress().getPort()) .method(headers.method()) .uri(headers.path()) .protocol(H2_PROTOCOL_NAME); } super.channelRead(ctx, msg); }
private void writeHeadersFrame( final ChannelHandlerContext ctx, Http2HeadersFrame headersFrame, final ChannelPromise promise) { if (isStreamIdValid(headersFrame.stream().id())) { encoder().writeHeaders(ctx, headersFrame.stream().id(), headersFrame.headers(), headersFrame.padding(), headersFrame.isEndStream(), promise); } else { final DefaultHttp2FrameStream stream = (DefaultHttp2FrameStream) headersFrame.stream(); final Http2Connection connection = connection(); final int streamId = connection.local().incrementAndGetNextStreamId(); encoder().writeHeaders(ctx, streamId, headersFrame.headers(), headersFrame.padding(), headersFrame.isEndStream(), writePromise); if (writePromise.isDone()) { notifyHeaderWritePromise(writePromise, promise);
if (frame instanceof Http2HeadersFrame) { Http2HeadersFrame headersFrame = (Http2HeadersFrame) frame; Http2Headers headers = headersFrame.headers(); Http2FrameStream stream = headersFrame.stream(); int id = stream == null ? 0 : stream.id(); if (headersFrame.isEndStream()) { if (headers.method() == null && status == null) { LastHttpContent last = new DefaultLastHttpContent(Unpooled.EMPTY_BUFFER, validateHeaders);
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof Http2HeadersFrame) { Http2HeadersFrame headersFrame = (Http2HeadersFrame)msg; HttpRequest request; if (headersFrame.isEndStream()) { request = HttpConversionUtil.toFullHttpRequest(-1, headersFrame.headers(), ctx.channel().alloc(), false); } else { request = HttpConversionUtil.toHttpRequest(-1, headersFrame.headers(), false); } HttpToH2Operations ops = new HttpToH2Operations(Connection.from(ctx.channel()), listener, request, headersFrame.headers(), ConnectionInfo.from(ctx.channel() .parent(), readForwardHeaders, request), cookieEncoder, cookieDecoder); ops.bind(); listener.onStateChange(ops, ConnectionObserver.State.CONFIGURED); } ctx.fireChannelRead(msg); }
protected boolean isEndOfRequestResponse(Object msg) { if (msg instanceof Http2HeadersFrame) { return ((Http2HeadersFrame) msg).isEndStream(); } if (msg instanceof Http2DataFrame) { return ((Http2DataFrame) msg).isEndStream(); } return false; }
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof Http2HeadersFrame){ final Http2HeadersFrame requestHeaders = (Http2HeadersFrame) msg; final SocketChannel channel = (SocketChannel) ctx.channel() .parent(); final Http2Headers headers = requestHeaders.headers(); accessLog = new AccessLog() .address(channel.remoteAddress().getHostString()) .port(channel.localAddress().getPort()) .method(headers.method()) .uri(headers.path()) .protocol(H2_PROTOCOL_NAME); } super.channelRead(ctx, msg); }
private void writeHeadersFrame( final ChannelHandlerContext ctx, Http2HeadersFrame headersFrame, final ChannelPromise promise) { if (isStreamIdValid(headersFrame.stream().id())) { encoder().writeHeaders(ctx, headersFrame.stream().id(), headersFrame.headers(), headersFrame.padding(), headersFrame.isEndStream(), promise); } else { final DefaultHttp2FrameStream stream = (DefaultHttp2FrameStream) headersFrame.stream(); final Http2Connection connection = connection(); final int streamId = connection.local().incrementAndGetNextStreamId(); encoder().writeHeaders(ctx, streamId, headersFrame.headers(), headersFrame.padding(), headersFrame.isEndStream(), writePromise); if (writePromise.isDone()) { notifyHeaderWritePromise(writePromise, promise);
@Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { boolean lastContent = false; if (msg instanceof Http2HeadersFrame) { final Http2HeadersFrame responseHeaders = (Http2HeadersFrame) msg; final Http2Headers headers = responseHeaders.headers(); lastContent = responseHeaders.isEndStream(); accessLog.status(headers.status()) .chunked(true); } if (msg instanceof Http2DataFrame) { final Http2DataFrame data = (Http2DataFrame) msg; lastContent = data.isEndStream(); accessLog.increaseContentLength(data.content().readableBytes()); } if (lastContent) { ctx.write(msg, promise) .addListener(future -> { if (future.isSuccess()) { accessLog.log(); } }); return; } ctx.write(msg, promise); } }