diff options
author | Simone Bordet | 2014-05-05 14:18:10 +0000 |
---|---|---|
committer | Simone Bordet | 2014-05-05 14:28:18 +0000 |
commit | 97fd4e48a66f5748f284603b32242796590a1038 (patch) | |
tree | 0bc20796566816a07f7f173210ddee4eadfd7b63 | |
parent | fb972e220a98fcdd01f0d02d3c6028fd1e2fa8e5 (diff) | |
download | org.eclipse.jetty.project-97fd4e48a66f5748f284603b32242796590a1038.tar.gz org.eclipse.jetty.project-97fd4e48a66f5748f284603b32242796590a1038.tar.xz org.eclipse.jetty.project-97fd4e48a66f5748f284603b32242796590a1038.zip |
Backport from 9.2.x.
-rw-r--r-- | jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java index 028daf76c8..273f0d979a 100644 --- a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java +++ b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java @@ -472,7 +472,7 @@ public class ProxyServlet extends HttpServlet proxyRequest.send(new ProxyResponseListener(request, response)); } - protected ContentProvider proxyRequestContent(Request proxyRequest, final HttpServletRequest request) throws IOException + protected ContentProvider proxyRequestContent(final Request proxyRequest, final HttpServletRequest request) throws IOException { return new InputStreamContentProvider(request.getInputStream()) { @@ -492,18 +492,15 @@ public class ProxyServlet extends HttpServlet @Override protected void onReadFailure(Throwable failure) { - onClientRequestFailure(request, failure); + onClientRequestFailure(proxyRequest, request, failure); } }; } - protected void onClientRequestFailure(HttpServletRequest request, Throwable failure) + protected void onClientRequestFailure(Request proxyRequest, HttpServletRequest request, Throwable failure) { - AsyncContext asyncContext = request.getAsyncContext(); - HttpServletResponse response = (HttpServletResponse)asyncContext.getResponse(); - response.setStatus(500); - response.setHeader(HttpHeader.CONNECTION.asString(), HttpHeaderValue.CLOSE.asString()); - asyncContext.complete(); + _log.debug(getRequestId(request) + " client request failure", failure); + proxyRequest.abort(failure); } protected void onRewriteFailed(HttpServletRequest request, HttpServletResponse response) throws IOException @@ -553,9 +550,9 @@ public class ProxyServlet extends HttpServlet protected void onResponseSuccess(HttpServletRequest request, HttpServletResponse response, Response proxyResponse) { + _log.debug("{} proxying successful", getRequestId(request)); AsyncContext asyncContext = request.getAsyncContext(); asyncContext.complete(); - _log.debug("{} proxying successful", getRequestId(request)); } protected void onResponseFailure(HttpServletRequest request, HttpServletResponse response, Response proxyResponse, Throwable failure) @@ -568,9 +565,9 @@ public class ProxyServlet extends HttpServlet else response.setStatus(HttpServletResponse.SC_BAD_GATEWAY); response.setHeader(HttpHeader.CONNECTION.asString(), HttpHeaderValue.CLOSE.asString()); + AsyncContext asyncContext = request.getAsyncContext(); + asyncContext.complete(); } - AsyncContext asyncContext = request.getAsyncContext(); - asyncContext.complete(); } protected int getRequestId(HttpServletRequest request) @@ -776,20 +773,12 @@ public class ProxyServlet extends HttpServlet } @Override - public void onSuccess(Response proxyResponse) - { - onResponseSuccess(request, response, proxyResponse); - } - - @Override - public void onFailure(Response proxyResponse, Throwable failure) - { - onResponseFailure(request, response, proxyResponse, failure); - } - - @Override public void onComplete(Result result) { + if (result.isSucceeded()) + onResponseSuccess(request, response, result.getResponse()); + else + onResponseFailure(request, response, result.getResponse(), result.getFailure()); _log.debug("{} proxying complete", getRequestId(request)); } } |