diff options
-rw-r--r-- | jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AbstractProxyServlet.java | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AbstractProxyServlet.java b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AbstractProxyServlet.java index bd2f0cb590..5e872d4f18 100644 --- a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AbstractProxyServlet.java +++ b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AbstractProxyServlet.java @@ -413,11 +413,11 @@ public abstract class AbstractProxyServlet extends HttpServlet * like {@link HttpServletResponse#sendError(int)}.</p> * * @param clientRequest the client request - * @param clientResponse the client response + * @param proxyResponse the client response */ - protected void onProxyRewriteFailed(HttpServletRequest clientRequest, HttpServletResponse clientResponse) + protected void onProxyRewriteFailed(HttpServletRequest clientRequest, HttpServletResponse proxyResponse) { - clientResponse.setStatus(HttpServletResponse.SC_FORBIDDEN); + sendProxyResponseError(clientRequest, proxyResponse, HttpStatus.FORBIDDEN_403); } protected boolean hasContent(HttpServletRequest clientRequest) @@ -549,8 +549,7 @@ public abstract class AbstractProxyServlet extends HttpServlet int status = failure instanceof TimeoutException ? HttpStatus.REQUEST_TIMEOUT_408 : HttpStatus.INTERNAL_SERVER_ERROR_500; - proxyResponse.setStatus(status); - clientRequest.getAsyncContext().complete(); + sendProxyResponseError(clientRequest, proxyResponse, status); } } @@ -636,13 +635,10 @@ public abstract class AbstractProxyServlet extends HttpServlet else { proxyResponse.resetBuffer(); - if (failure instanceof TimeoutException) - proxyResponse.setStatus(HttpServletResponse.SC_GATEWAY_TIMEOUT); - else - proxyResponse.setStatus(HttpServletResponse.SC_BAD_GATEWAY); - proxyResponse.setHeader(HttpHeader.CONNECTION.asString(), HttpHeaderValue.CLOSE.asString()); - AsyncContext asyncContext = clientRequest.getAsyncContext(); - asyncContext.complete(); + int status = failure instanceof TimeoutException ? + HttpStatus.GATEWAY_TIMEOUT_504 : + HttpStatus.BAD_GATEWAY_502; + sendProxyResponseError(clientRequest, proxyResponse, status); } } @@ -651,6 +647,14 @@ public abstract class AbstractProxyServlet extends HttpServlet return System.identityHashCode(clientRequest); } + protected void sendProxyResponseError(HttpServletRequest clientRequest, HttpServletResponse proxyResponse, int status) + { + proxyResponse.setStatus(status); + proxyResponse.setHeader(HttpHeader.CONNECTION.asString(), HttpHeaderValue.CLOSE.asString()); + if (clientRequest.isAsyncStarted()) + clientRequest.getAsyncContext().complete(); + } + /** * <p>Utility class that implement transparent proxy functionalities.</p> * <p>Configuration parameters:</p> |