BUG/MINOR: httpclient: allow to replace the host header
This patch allows to replace the host header generated by the
httpclient instead of adding a new one, resulting in the server replying
an error 400.
The host header is now generated from the uri only if it wasn't found in
the list of headers.
Also add a new request in the VTC file to test this.
This patch must be backported in 2.5.
diff --git a/reg-tests/lua/lua_httpclient.lua b/reg-tests/lua/lua_httpclient.lua
index a79dfb2..e9ec0f0 100644
--- a/reg-tests/lua/lua_httpclient.lua
+++ b/reg-tests/lua/lua_httpclient.lua
@@ -1,10 +1,12 @@
local vtc_port = 0
local vtc_port2 = 0
+local vtc_port3 = 0
core.register_service("fakeserv", "http", function(applet)
vtc_port = applet.headers["vtcport"][0]
vtc_port2 = applet.headers["vtcport2"][0]
+ vtc_port3 = applet.headers["vtcport3"][0]
core.Info("APPLET START")
local response = "OK"
applet:add_header("Server", "haproxy/webstats")
@@ -38,6 +40,10 @@
local httpclient2 = core.httpclient()
local response2 = httpclient2:post{url="http://127.0.0.1:" .. vtc_port2, body=body}
+ core.Info("Third httpclient request")
+ local httpclient3 = core.httpclient()
+ local response3 = httpclient3:get{url="http://127.0.0.1:" .. vtc_port3, headers={ [ "Host" ] = { "foobar.haproxy.local" } }}
+
end
core.register_task(cron)
diff --git a/reg-tests/lua/lua_httpclient.vtc b/reg-tests/lua/lua_httpclient.vtc
index 9d53cfe..7c55d54 100644
--- a/reg-tests/lua/lua_httpclient.vtc
+++ b/reg-tests/lua/lua_httpclient.vtc
@@ -28,6 +28,14 @@
expect req.bodylen == 54000
} -start
+server s3 {
+ rxreq
+ txresp -bodylen 54000
+ expect req.method == "GET"
+ expect req.http.host == "foobar.haproxy.local"
+} -start
+
+
haproxy h1 -conf {
global
lua-load ${testdir}/lua_httpclient.lua
@@ -44,7 +52,7 @@
} -start
client c0 -connect ${h1_fe1_sock} {
- txreq -url "/" -hdr "vtcport: ${s1_port}" -hdr "vtcport2: ${s2_port}"
+ txreq -url "/" -hdr "vtcport: ${s1_port}" -hdr "vtcport2: ${s2_port}" -hdr "vtcport3: ${s3_port}"
rxresp
expect resp.status == 200
} -run
@@ -52,3 +60,4 @@
server s1 -wait
server s2 -wait
+server s3 -wait