This is an automated email from the ASF dual-hosted git repository.

zregvart pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 0127db8  CAMEL-13960: retain the proxied body
0127db8 is described below

commit 0127db814f83bd7802ebcc7d2d75549c62b967a4
Author: Zoran Regvart <zregv...@apache.org>
AuthorDate: Tue Sep 10 13:55:53 2019 +0200

    CAMEL-13960: retain the proxied body
    
    We need to retain the body of the HTTP request when proxying as the
    request will be released and the body along with it, so when the body is
    passed to the next request in the chain and released on use the
    reference count would already reached 0.
---
 .../org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git 
a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
 
b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
index 8339e7e..c20f6b3 100644
--- 
a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
+++ 
b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/DefaultNettyHttpBinding.java
@@ -100,7 +100,8 @@ public class DefaultNettyHttpBinding implements 
NettyHttpBinding, Cloneable {
         if (configuration.isHttpProxy() || 
configuration.isDisableStreamCache()) {
             // keep the body as is, and use type converters
             // for proxy use case pass the request body buffer directly to the 
response to avoid additional processing
-            answer.setBody(request.content());
+            // we need to retain it so that the request can be released and we 
can keep the content
+            answer.setBody(request.content().retain());
         } else {
             // turn the body into stream cached (on the client/consumer side 
we can facade the netty stream instead of converting to byte array)
             NettyChannelBufferStreamCache cache = new 
NettyChannelBufferStreamCache(request.content());

Reply via email to