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

ppalaga pushed a commit to branch camel-4.0.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-4.0.x by this push:
     new c07bf04d9f3 CAMEL-19843: HTTP/2 pseudo-headers such as :status should 
not be propagated from CXF message to Camel message
c07bf04d9f3 is described below

commit c07bf04d9f3bcd95bf4673126009adbd51e0b4e8
Author: Peter Palaga <ppal...@redhat.com>
AuthorDate: Wed Sep 6 19:19:47 2023 +0200

    CAMEL-19843: HTTP/2 pseudo-headers such as :status should not be
    propagated from CXF message to Camel message
---
 .../apache/camel/component/cxf/jaxws/DefaultCxfBinding.java |  3 +++
 .../camel/component/cxf/jaxws/CxfProducerRouterTest.java    | 13 +++++++++++++
 2 files changed, 16 insertions(+)

diff --git 
a/components/camel-cxf/camel-cxf-soap/src/main/java/org/apache/camel/component/cxf/jaxws/DefaultCxfBinding.java
 
b/components/camel-cxf/camel-cxf-soap/src/main/java/org/apache/camel/component/cxf/jaxws/DefaultCxfBinding.java
index 13eb2c68b85..f9d35445251 100644
--- 
a/components/camel-cxf/camel-cxf-soap/src/main/java/org/apache/camel/component/cxf/jaxws/DefaultCxfBinding.java
+++ 
b/components/camel-cxf/camel-cxf-soap/src/main/java/org/apache/camel/component/cxf/jaxws/DefaultCxfBinding.java
@@ -674,6 +674,9 @@ public class DefaultCxfBinding implements CxfBinding, 
HeaderFilterStrategyAware
                         // SOAPAction header may contain quoted value. Remove 
the quotes here.
                         soapAction = 
StringHelper.removeLeadingAndEndingQuotes(soapAction);
                         camelHeaders.put(SoapBindingConstants.SOAP_ACTION, 
soapAction);
+                    } else if (entry.getKey().startsWith(":")) {
+                        /* Ignore HTTP/2 pseudo headers such as :status */
+                        continue;
                     } else {
                         LOG.trace("Populate header from CXF header={} 
value={}",
                                 entry.getKey(), entry.getValue());
diff --git 
a/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfProducerRouterTest.java
 
b/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfProducerRouterTest.java
index 544b4c348ca..82f9d6dd1e2 100644
--- 
a/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfProducerRouterTest.java
+++ 
b/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfProducerRouterTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.cxf.jaxws;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
@@ -152,6 +153,18 @@ public class CxfProducerRouterTest extends 
CamelTestSupport {
 
     }
 
+    @Test
+    public void testIgnorePseudoHeaders() throws Exception {
+        Exchange senderExchange = new DefaultExchange(context, 
ExchangePattern.InOut);
+        senderExchange.getIn().setBody(REQUEST_MESSAGE);
+        Exchange exchange = template.send("direct:EndpointB", senderExchange);
+
+        org.apache.camel.Message out = exchange.getMessage();
+        final List<String> pseudoHeaders
+                = out.getHeaders().keySet().stream().filter(key -> 
key.startsWith(":")).collect(Collectors.toList());
+        assertTrue(pseudoHeaders.isEmpty(), "Pseudo-headers such as :status 
should be filtered out; found: " + pseudoHeaders);
+    }
+
     @Test
     public void testInvokingSimpleServerWithPayLoadDataFormat() throws 
Exception {
         Exchange senderExchange = new DefaultExchange(context, 
ExchangePattern.InOut);

Reply via email to