Allow subclasses to override the proxied request content.
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 09217f0..3213018 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
@@ -41,6 +41,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.eclipse.jetty.client.HttpClient;
+import org.eclipse.jetty.client.api.ContentProvider;
 import org.eclipse.jetty.client.api.Request;
 import org.eclipse.jetty.client.api.Response;
 import org.eclipse.jetty.client.api.Result;
@@ -427,30 +428,14 @@
         addViaHeader(proxyRequest);
         addXForwardedHeaders(proxyRequest, request);
 
-        if (hasContent)
-        {
-            proxyRequest.content(new InputStreamContentProvider(request.getInputStream())
-            {
-                @Override
-                public long getLength()
-                {
-                    return request.getContentLength();
-                }
-
-                @Override
-                protected ByteBuffer onRead(byte[] buffer, int offset, int length)
-                {
-                    _log.debug("{} proxying content to upstream: {} bytes", requestId, length);
-                    return super.onRead(buffer, offset, length);
-                }
-            });
-        }
-
         final AsyncContext asyncContext = request.startAsync();
         // We do not timeout the continuation, but the proxy request
         asyncContext.setTimeout(0);
         request.setAttribute(ASYNC_CONTEXT, asyncContext);
 
+        if (hasContent)
+            proxyRequest.content(proxyRequestContent(proxyRequest, request));
+
         customizeProxyRequest(proxyRequest, request);
 
         if (_log.isDebugEnabled())
@@ -490,6 +475,25 @@
         proxyRequest.send(new ProxyResponseListener(request, response));
     }
 
+    protected ContentProvider proxyRequestContent(Request proxyRequest, final HttpServletRequest request) throws IOException
+    {
+        return new InputStreamContentProvider(request.getInputStream())
+        {
+            @Override
+            public long getLength()
+            {
+                return request.getContentLength();
+            }
+
+            @Override
+            protected ByteBuffer onRead(byte[] buffer, int offset, int length)
+            {
+                _log.debug("{} proxying content to upstream: {} bytes", getRequestId(request), length);
+                return super.onRead(buffer, offset, length);
+            }
+        };
+    }
+
     protected void onRewriteFailed(HttpServletRequest request, HttpServletResponse response) throws IOException
     {
         response.sendError(HttpServletResponse.SC_FORBIDDEN);