/** * Produces a {@link HttpResponse} for {@link HttpRequest}s which define an expectation. Returns {@code null} if the * request should be rejected. See {@link #rejectResponse(HttpRequest)}. */ protected HttpResponse acceptMessage(@SuppressWarnings("unused") HttpRequest request) { return ACCEPT.retainedDuplicate(); }
/** * Returns the appropriate 4XX {@link HttpResponse} for the given {@link HttpRequest}. */ protected HttpResponse rejectResponse(@SuppressWarnings("unused") HttpRequest request) { return EXPECTATION_FAILED.retainedDuplicate(); }
@Override public FullHttpResponse retainedDuplicate() { if (response instanceof FullHttpResponse) { return ((FullHttpResponse) response).retainedDuplicate(); } else { return this; } }
private static Object continueResponse(HttpMessage start, int maxContentLength, ChannelPipeline pipeline) { if (HttpUtil.isUnsupportedExpectation(start)) { // if the request contains an unsupported expectation, we return 417 pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return EXPECTATION_FAILED.retainedDuplicate(); } else if (HttpUtil.is100ContinueExpected(start)) { // if the request contains 100-continue but the content-length is too large, we return 413 if (getContentLength(start, -1L) <= maxContentLength) { return CONTINUE.retainedDuplicate(); } pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return TOO_LARGE.retainedDuplicate(); } return null; }
ChannelFuture future = ctx.writeAndFlush(TOO_LARGE_CLOSE.retainedDuplicate()); future.addListener(new ChannelFutureListener() { @Override ctx.writeAndFlush(TOO_LARGE.retainedDuplicate()).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception {
/** * Produces a {@link HttpResponse} for {@link HttpRequest}s which define an expectation. Returns {@code null} if the * request should be rejected. See {@link #rejectResponse(HttpRequest)}. */ protected HttpResponse acceptMessage(@SuppressWarnings("unused") HttpRequest request) { return ACCEPT.retainedDuplicate(); }
/** * Returns the appropriate 4XX {@link HttpResponse} for the given {@link HttpRequest}. */ protected HttpResponse rejectResponse(@SuppressWarnings("unused") HttpRequest request) { return EXPECTATION_FAILED.retainedDuplicate(); }
/** * Produces a {@link HttpResponse} for {@link HttpRequest}s which define an expectation. Returns {@code null} if the * request should be rejected. See {@link #rejectResponse(HttpRequest)}. */ protected HttpResponse acceptMessage(@SuppressWarnings("unused") HttpRequest request) { return ACCEPT.retainedDuplicate(); }
/** * Produces a {@link HttpResponse} for {@link HttpRequest}s which define an expectation. Returns {@code null} if the * request should be rejected. See {@link #rejectResponse(HttpRequest)}. */ protected HttpResponse acceptMessage(@SuppressWarnings("unused") HttpRequest request) { return ACCEPT.retainedDuplicate(); }
/** * Returns the appropriate 4XX {@link HttpResponse} for the given {@link HttpRequest}. */ protected HttpResponse rejectResponse(@SuppressWarnings("unused") HttpRequest request) { return EXPECTATION_FAILED.retainedDuplicate(); }
/** * Produces a {@link HttpResponse} for {@link HttpRequest}s which define an expectation. Returns {@code null} if the * request should be rejected. See {@link #rejectResponse(HttpRequest)}. */ protected HttpResponse acceptMessage(@SuppressWarnings("unused") HttpRequest request) { return ACCEPT.retainedDuplicate(); }
/** * Returns the appropriate 4XX {@link HttpResponse} for the given {@link HttpRequest}. */ protected HttpResponse rejectResponse(@SuppressWarnings("unused") HttpRequest request) { return EXPECTATION_FAILED.retainedDuplicate(); }
/** * Returns the appropriate 4XX {@link HttpResponse} for the given {@link HttpRequest}. */ protected HttpResponse rejectResponse(@SuppressWarnings("unused") HttpRequest request) { return EXPECTATION_FAILED.retainedDuplicate(); }
@Override public FullHttpResponse retainedDuplicate() { if (response instanceof FullHttpResponse) { return ((FullHttpResponse) response).retainedDuplicate(); } else { return this; } }
@Override protected void handleOversizedMessage(final ChannelHandlerContext ctx, HttpMessage oversized) throws Exception { failed = true; LOGGER.warn("A large request encountered. Closing the channel"); if (oversized instanceof HttpRequest) { // send back a 413 and close the connection final ChannelFuture future = ctx.writeAndFlush(TOO_LARGE_CLOSE.retainedDuplicate()); future.addListener((ChannelFutureListener) channelFuture -> { if (!channelFuture.isSuccess()) { LOGGER.debug("Failed to send a 413 Request Entity Too Large.", channelFuture.cause()); } ctx.close(); }); } else { throw new IllegalStateException("Unknown large message of class " + oversized.getClass()); } }
private static Object continueResponse(HttpMessage start, int maxContentLength, ChannelPipeline pipeline) { if (HttpUtil.isUnsupportedExpectation(start)) { // if the request contains an unsupported expectation, we return 417 pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return EXPECTATION_FAILED.retainedDuplicate(); } else if (HttpUtil.is100ContinueExpected(start)) { // if the request contains 100-continue but the content-length is too large, we return 413 if (getContentLength(start, -1L) <= maxContentLength) { return CONTINUE.retainedDuplicate(); } pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return TOO_LARGE.retainedDuplicate(); } return null; }
private static Object continueResponse(HttpMessage start, int maxContentLength, ChannelPipeline pipeline) { if (HttpUtil.isUnsupportedExpectation(start)) { // if the request contains an unsupported expectation, we return 417 pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return EXPECTATION_FAILED.retainedDuplicate(); } else if (HttpUtil.is100ContinueExpected(start)) { // if the request contains 100-continue but the content-length is too large, we return 413 if (getContentLength(start, -1L) <= maxContentLength) { return CONTINUE.retainedDuplicate(); } pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return TOO_LARGE.retainedDuplicate(); } return null; }
private static Object continueResponse(HttpMessage start, int maxContentLength, ChannelPipeline pipeline) { if (HttpUtil.isUnsupportedExpectation(start)) { // if the request contains an unsupported expectation, we return 417 pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return EXPECTATION_FAILED.retainedDuplicate(); } else if (HttpUtil.is100ContinueExpected(start)) { // if the request contains 100-continue but the content-length is too large, we return 413 if (getContentLength(start, -1L) <= maxContentLength) { return CONTINUE.retainedDuplicate(); } pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return TOO_LARGE.retainedDuplicate(); } return null; }
private static Object continueResponse(HttpMessage start, int maxContentLength, ChannelPipeline pipeline) { if (HttpUtil.isUnsupportedExpectation(start)) { // if the request contains an unsupported expectation, we return 417 pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return EXPECTATION_FAILED.retainedDuplicate(); } else if (HttpUtil.is100ContinueExpected(start)) { // if the request contains 100-continue but the content-length is too large, we return 413 if (getContentLength(start, -1L) <= maxContentLength) { return CONTINUE.retainedDuplicate(); } pipeline.fireUserEventTriggered(HttpExpectationFailedEvent.INSTANCE); return TOO_LARGE.retainedDuplicate(); } return null; }
ChannelFuture future = ctx.writeAndFlush(TOO_LARGE_CLOSE.retainedDuplicate()); future.addListener(new ChannelFutureListener() { @Override ctx.writeAndFlush(TOO_LARGE.retainedDuplicate()).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception {