mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-06 20:29:48 +00:00
BUG/MINOR: http-fetch: Only fill txn status during prefetch if not already set
When an HTTP sample fetch is evaluated, a prefetch is performed to check the channel contains a valid HTTP message. If the HTTP analysis was not already started, some info are filled. It may be an issue when an error is returned before the response analysis and when http-after-response rules are used because the original HTTP txn status may be crushed. For instance, with the following configuration: listen l1 log global mode http bind :8000 log-format ST=%ST http-after-response set-status 400 #http-after-response set-var(res.foo) status A "ST=503" is reported in the log messages, independantly on the first http-after-response rule. The same must happen if the second rule is uncommented. However, for now, a "ST=400" is logged. To fix the bug, during the prefetch, the HTTP txn status is only set if it is undefined (-1). This way, we are sure the original one is never lost. This patch should be backported as far as 2.2.
This commit is contained in:
parent
18cd4746e5
commit
31850b470a
@ -311,7 +311,7 @@ struct htx *smp_prefetch_htx(struct sample *smp, struct channel *chn, struct che
|
||||
if (txn->meth == HTTP_METH_GET || txn->meth == HTTP_METH_HEAD)
|
||||
s->flags |= SF_REDIRECTABLE;
|
||||
}
|
||||
else
|
||||
else if (txn->status == -1)
|
||||
txn->status = sl->info.res.status;
|
||||
if (sl->flags & HTX_SL_F_VER_11)
|
||||
msg->flags |= HTTP_MSGF_VER_11;
|
||||
|
Loading…
Reference in New Issue
Block a user