Problem description:
I perform client PUT request to backend through haproxy with http keepalive and "Expect: 100-continue" header set. In case of backend response with 201 code and "Connection: close" header, haproxy forwards backend response to client, but does not close connection to backend and forwards next request from client to the same http session to backend. Also, as i see in dump, client headers in the next request of the current session are not modified. When backend responds with "100-Continue" everything works as expected.
It seems, that problem present with any backend response different from "100-Continue".
Is there any way to make haproxy deal with "100-Continue" well, or may be this is a bug?
HA-Proxy version 1.7.9-1ppa1~trusty 2017/08/19
Test config is simple:
global
log /dev/log local0 debug
log 127.0.0.1 local0 debug
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option http-keep-alive
timeout connect 20m
timeout client 50m
timeout server 50m
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
backend test
server 01 127.0.0.1:8080
http-request add-header X-Haproxy is_here
option forwardfor header X-Real-IP
frontend test_front
bind *:80
default_backend test
I perform client PUT request to backend through haproxy with http keepalive and "Expect: 100-continue" header set. In case of backend response with 201 code and "Connection: close" header, haproxy forwards backend response to client, but does not close connection to backend and forwards next request from client to the same http session to backend. Also, as i see in dump, client headers in the next request of the current session are not modified. When backend responds with "100-Continue" everything works as expected.
It seems, that problem present with any backend response different from "100-Continue".
Is there any way to make haproxy deal with "100-Continue" well, or may be this is a bug?
HA-Proxy version 1.7.9-1ppa1~trusty 2017/08/19
Test config is simple:
global
log /dev/log local0 debug
log 127.0.0.1 local0 debug
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option http-keep-alive
timeout connect 20m
timeout client 50m
timeout server 50m
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
backend test
server 01 127.0.0.1:8080
http-request add-header X-Haproxy is_here
option forwardfor header X-Real-IP
frontend test_front
bind *:80
default_backend test