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.
This commit is contained in:
Willy Tarreau 2019-07-18 16:17:15 +02:00
parent 0ba6c85a0b
commit 69564b1c49
2 changed files with 2 additions and 0 deletions

View File

@ -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) if (http_parse_reqline(&txn->req, HTTP_MSG_RQMETH, cur_ptr, cur_end + 1, NULL, NULL) == NULL)
goto return_bad_req; goto return_bad_req;
} }
conn->target = &s->be->obj_type;
} }
/* /*

View File

@ -805,6 +805,7 @@ int htx_process_request(struct stream *s, struct channel *req, int an_bit)
* insignificant. * insignificant.
*/ */
istcpy(&uri, (path.len ? path : ist("/")), uri.len); istcpy(&uri, (path.len ? path : ist("/")), uri.len);
conn->target = &s->be->obj_type;
} }
/* /*