From 69564b1c4999977633608e567866e624ec392171 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 18 Jul 2019 16:17:15 +0200 Subject: [PATCH] BUG/MEDIUM: http/htx: unbreak option http_proxy The temporary connection used to hold the target connection's address was missing a valid target, resulting in a 500 server error being reported when trying to connect to a remote host. Strangely this issue was introduced as a side effect of commit 2c52a2b9e ("MEDIUM: connection: make mux->detach() release the connection") which at first glance looks unrelated but solidly stops the bisection (note that by default this part even crashes). It's suspected that the error only happens when closing and destroys pending data in fact. Given that this feature was broken very early during 1.8-rc1 development it doesn't seem to be used often. This must be backported as far as 1.8. --- src/proto_http.c | 1 + src/proto_htx.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/proto_http.c b/src/proto_http.c index 35f86ef1d..f77d7bc48 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -2886,6 +2886,7 @@ int http_process_request(struct stream *s, struct channel *req, int an_bit) if (http_parse_reqline(&txn->req, HTTP_MSG_RQMETH, cur_ptr, cur_end + 1, NULL, NULL) == NULL) goto return_bad_req; } + conn->target = &s->be->obj_type; } /* diff --git a/src/proto_htx.c b/src/proto_htx.c index 59b0ff975..620f81b75 100644 --- a/src/proto_htx.c +++ b/src/proto_htx.c @@ -805,6 +805,7 @@ int htx_process_request(struct stream *s, struct channel *req, int an_bit) * insignificant. */ istcpy(&uri, (path.len ? path : ist("/")), uri.len); + conn->target = &s->be->obj_type; } /*