Repository: camel
Updated Branches:
  refs/heads/master 5ae014838 -> dd6f9ba60


CAMEL-10926 Set the Host header in Undertow pro...

...ducer

The implementation checks if the incoming Camel message has a `Host`
header, and if it's not set sets the `Host` HTTP header of the request
to authority of parsed URI value from given `httpURI` parameter
(transfered through `path` property of `ClientRequest`).


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/dd6f9ba6
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/dd6f9ba6
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/dd6f9ba6

Branch: refs/heads/master
Commit: dd6f9ba60fb472b5a4e44f5b7d0a89b7dc895ade
Parents: 5ae0148
Author: Zoran Regvart <zregv...@apache.org>
Authored: Thu Mar 2 13:40:10 2017 +0100
Committer: Zoran Regvart <zregv...@apache.org>
Committed: Thu Mar 2 13:40:10 2017 +0100

----------------------------------------------------------------------
 .../component/undertow/DefaultUndertowHttpBinding.java | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/dd6f9ba6/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
----------------------------------------------------------------------
diff --git 
a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
 
b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
index 153279b..de64148 100644
--- 
a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
+++ 
b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
@@ -21,6 +21,7 @@ import java.io.IOException;
 import java.io.ObjectOutputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.net.URI;
 import java.nio.ByteBuffer;
 import java.nio.channels.ReadableByteChannel;
 import java.util.Deque;
@@ -28,6 +29,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Optional;
 
 import javax.activation.FileDataSource;
 
@@ -39,6 +41,7 @@ import io.undertow.server.HttpServerExchange;
 import io.undertow.server.handlers.form.FormData;
 import io.undertow.server.handlers.form.FormData.FormValue;
 import io.undertow.server.handlers.form.FormDataParser;
+import io.undertow.util.HeaderMap;
 import io.undertow.util.Headers;
 import io.undertow.util.HttpString;
 import io.undertow.util.Methods;
@@ -350,14 +353,20 @@ public class DefaultUndertowHttpBinding implements 
UndertowHttpBinding {
 
         Object body = message.getBody();
 
+        final HeaderMap requestHeaders = clientRequest.getRequestHeaders();
+
         // set the content type in the response.
         String contentType = MessageHelper.getContentType(message);
         if (contentType != null) {
             // set content-type
-            clientRequest.getRequestHeaders().put(Headers.CONTENT_TYPE, 
contentType);
+            requestHeaders.put(Headers.CONTENT_TYPE, contentType);
             LOG.trace("Content-Type: {}", contentType);
         }
 
+        // Set the Host header
+        final String host = message.getHeader("Host", String.class);
+        requestHeaders.put(Headers.HOST, 
Optional.ofNullable(host).orElseGet(()-> 
URI.create(clientRequest.getPath()).getAuthority()));
+
         TypeConverter tc = 
message.getExchange().getContext().getTypeConverter();
 
         //copy headers from Message to Request
@@ -371,7 +380,7 @@ public class DefaultUndertowHttpBinding implements 
UndertowHttpBinding {
                 if (headerValue != null && headerFilterStrategy != null
                         && 
!headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, 
message.getExchange())) {
                     LOG.trace("HTTP-Header: {}={}", key, headerValue);
-                    clientRequest.getRequestHeaders().add(new HttpString(key), 
headerValue);
+                    requestHeaders.add(new HttpString(key), headerValue);
                 }
             }
         }

Reply via email to