public Http2HeadersAdaptor(Http2Headers headers) { List<CharSequence> cookies = headers.getAll(HttpHeaderNames.COOKIE); if (cookies != null && cookies.size() > 1) { // combine the cookie values into 1 header entry. // https://tools.ietf.org/html/rfc7540#section-8.1.2.5 String value = cookies.stream().collect(Collectors.joining("; ")); headers.set(HttpHeaderNames.COOKIE, value); } this.headers = headers; }
private void writeErrorResponse(ChannelHandlerContext ctx, int streamId, HttpResponseStatus status) throws Http2Exception { final byte[] content = status.toString().getBytes(StandardCharsets.UTF_8); writer.writeHeaders( ctx, streamId, new DefaultHttp2Headers(false) .status(status.codeAsText()) .set(HttpHeaderNames.CONTENT_TYPE, MediaType.PLAIN_TEXT_UTF_8.toString()) .setInt(HttpHeaderNames.CONTENT_LENGTH, content.length), 0, false, ctx.voidPromise()); writer.writeData(ctx, streamId, Unpooled.wrappedBuffer(content), 0, true, ctx.voidPromise()); final Http2Stream stream = writer.connection().stream(streamId); if (stream != null && writer.flowController().hasFlowControlled(stream)) { // Ensure to flush the error response if it's flow-controlled so that it is sent // before an RST_STREAM frame. writer.flowController().writePendingBytes(); } }
@Override public MultiMap set(String name, Iterable<String> values) { if (!io.vertx.core.http.HttpHeaders.DISABLE_HTTP_HEADERS_VALIDATION) { HttpUtils.validateHeader(name, values); } headers.set(toLowerCase(name), values); return this; }
@Override public MultiMap set(String name, String value) { if (!io.vertx.core.http.HttpHeaders.DISABLE_HTTP_HEADERS_VALIDATION) { HttpUtils.validateHeader(name, value); } headers.set(toLowerCase(name), value); return this; }
@Override public MultiMap set(CharSequence name, CharSequence value) { if (!io.vertx.core.http.HttpHeaders.DISABLE_HTTP_HEADERS_VALIDATION) { HttpUtils.validateHeader(name, value); } headers.set(toLowerCase(name), value); return this; }
@Override public MultiMap set(CharSequence name, Iterable<CharSequence> values) { if (!io.vertx.core.http.HttpHeaders.DISABLE_HTTP_HEADERS_VALIDATION) { HttpUtils.validateHeader(name, values); } headers.set(toLowerCase(name), values); return this; }
private void sanitizeHeaders() { if (head || status == HttpResponseStatus.NOT_MODIFIED) { headers.remove(HttpHeaders.TRANSFER_ENCODING); } else if (status == HttpResponseStatus.RESET_CONTENT) { headers.remove(HttpHeaders.TRANSFER_ENCODING); headers.set(HttpHeaders.CONTENT_LENGTH, "0"); } else if (status.codeClass() == HttpStatusClass.INFORMATIONAL || status == HttpResponseStatus.NO_CONTENT) { headers.remove(HttpHeaders.TRANSFER_ENCODING); headers.remove(HttpHeaders.CONTENT_LENGTH); } }
private void sendHttp2Response0(HttpResponseStatus status, boolean error, ByteBuf data) { Http2Headers headers = new DefaultHttp2Headers().status(status.codeAsText()); if (request.getSerializeType() > 0) { String serialization = SerializerFactory.getAliasByCode(request.getSerializeType()); headers.set(RemotingConstants.HEAD_SERIALIZE_TYPE, serialization); } else { headers.set(CONTENT_TYPE, "text/plain; charset=" + RpcConstants.DEFAULT_CHARSET.displayName()); } if (error) { headers.set(RemotingConstants.HEAD_RESPONSE_ERROR, "true"); } if (data != null) { encoder.writeHeaders(ctx, streamId, headers, 0, false, ctx.newPromise()); encoder.writeData(ctx, streamId, data, 0, true, ctx.newPromise()); } else { encoder.writeHeaders(ctx, streamId, headers, 0, true, ctx.newPromise()); } } }
private void sendHttp2Response0(HttpResponseStatus status, boolean error, ByteBuf data) { Http2Headers headers = new DefaultHttp2Headers().status(status.codeAsText()); if (request.getSerializeType() > 0) { String serialization = SerializerFactory.getAliasByCode(request.getSerializeType()); headers.set(RemotingConstants.HEAD_SERIALIZE_TYPE, serialization); } else { headers.set(CONTENT_TYPE, "text/plain; charset=" + RpcConstants.DEFAULT_CHARSET.displayName()); } if (error) { headers.set(RemotingConstants.HEAD_RESPONSE_ERROR, "true"); } if (data != null) { encoder.writeHeaders(ctx, streamId, headers, 0, false, ctx.newPromise()); encoder.writeData(ctx, streamId, data, 0, true, ctx.newPromise()); } else { encoder.writeHeaders(ctx, streamId, headers, 0, true, ctx.newPromise()); } } }
protected void sendHttp2Response(ChannelHandlerContext ctx, int streamId, HttpResponseStatus status, String result) { // Send a frame for the response status Http2Headers headers = new DefaultHttp2Headers().status(status.codeAsText()); if (!HttpResponseStatus.OK.equals(status)) { headers.set(RemotingConstants.HEAD_RESPONSE_ERROR, "true"); } if (StringUtils.isNotBlank(result)) { ByteBuf data = ctx.alloc().buffer(); data.writeBytes(result.getBytes(RpcConstants.DEFAULT_CHARSET)); encoder().writeHeaders(ctx, streamId, headers, 0, false, ctx.newPromise()); encoder().writeData(ctx, streamId, data, 0, true, ctx.newPromise()); } else { encoder().writeHeaders(ctx, streamId, headers, 0, true, ctx.newPromise()); } }
protected void sendHttp2Response(ChannelHandlerContext ctx, int streamId, HttpResponseStatus status, String result) { // Send a frame for the response status Http2Headers headers = new DefaultHttp2Headers().status(status.codeAsText()); if (!HttpResponseStatus.OK.equals(status)) { headers.set(RemotingConstants.HEAD_RESPONSE_ERROR, "true"); } if (StringUtils.isNotBlank(result)) { ByteBuf data = ctx.alloc().buffer(); data.writeBytes(result.getBytes(RpcConstants.DEFAULT_CHARSET)); encoder().writeHeaders(ctx, streamId, headers, 0, false, ctx.newPromise()); encoder().writeData(ctx, streamId, data, 0, true, ctx.newPromise()); } else { encoder().writeHeaders(ctx, streamId, headers, 0, true, ctx.newPromise()); } }
out.set(in); out.remove(HttpHeaderNames.CONNECTION); out.remove(HttpHeaderNames.TRANSFER_ENCODING);
headers.remove(CONTENT_ENCODING); } else { headers.set(CONTENT_ENCODING, targetContentEncoding);
h.set(HttpHeaderNames.ACCEPT_ENCODING, DEFLATE_GZIP);
public Http2HeadersAdaptor(Http2Headers headers) { List<CharSequence> cookies = headers.getAll(HttpHeaderNames.COOKIE); if (cookies != null && cookies.size() > 1) { // combine the cookie values into 1 header entry. // https://tools.ietf.org/html/rfc7540#section-8.1.2.5 String value = cookies.stream().collect(Collectors.joining("; ")); headers.set(HttpHeaderNames.COOKIE, value); } this.headers = headers; }
headers.remove(CONTENT_ENCODING); } else { headers.set(CONTENT_ENCODING, targetContentEncoding);
@Override public MultiMap set(CharSequence name, CharSequence value) { if (!io.vertx.core.http.HttpHeaders.DISABLE_HTTP_HEADERS_VALIDATION) { HttpUtils.validateHeader(name, value); } headers.set(toLowerCase(name), value); return this; }
@Override public MultiMap set(String name, Iterable<String> values) { if (!io.vertx.core.http.HttpHeaders.DISABLE_HTTP_HEADERS_VALIDATION) { HttpUtils.validateHeader(name, values); } headers.set(toLowerCase(name), values); return this; }
@Override public MultiMap set(CharSequence name, Iterable<CharSequence> values) { if (!io.vertx.core.http.HttpHeaders.DISABLE_HTTP_HEADERS_VALIDATION) { HttpUtils.validateHeader(name, values); } headers.set(toLowerCase(name), values); return this; }
private void sanitizeHeaders() { if (head || status == HttpResponseStatus.NOT_MODIFIED) { headers.remove(HttpHeaders.TRANSFER_ENCODING); } else if (status == HttpResponseStatus.RESET_CONTENT) { headers.remove(HttpHeaders.TRANSFER_ENCODING); headers.set(HttpHeaders.CONTENT_LENGTH, "0"); } else if (status.codeClass() == HttpStatusClass.INFORMATIONAL || status == HttpResponseStatus.NO_CONTENT) { headers.remove(HttpHeaders.TRANSFER_ENCODING); headers.remove(HttpHeaders.CONTENT_LENGTH); } }