mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-25 07:41:36 +02:00
BUG/MINOR: stream: Don't update counters when TCP to H2 upgrades are performed
When a TCP to H2 upgrade is performed, the SF_IGNORE flag is set on the stream before killing it. This happens when a TCP/SSL client connection is routed to a HTTP backend and the h2 alpn detected. The SF_IGNORE flag was added for this purpose, to skip some processing when the stream is aborted before a mux upgrade. Some counters updates were skipped this way. But some others are still updated. Now, all counters update at the end of process_stream(), before releasing the stream, are ignored if SF_IGNORE flag is set. Note this stream is aborted because we switch from a mono-stream to a multi-stream multiplexer. It works differently for TCP to H1 upgrades. This patch should be backported as far as 2.0 after some observation period.
This commit is contained in:
parent
37286a5ac5
commit
341064eb16
@ -2399,8 +2399,9 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
|
|||||||
DISGUISE(write(1, trash.area, trash.data));
|
DISGUISE(write(1, trash.area, trash.data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(s->flags & SF_IGNORE)) {
|
||||||
s->logs.t_close = tv_ms_elapsed(&s->logs.tv_accept, &now);
|
s->logs.t_close = tv_ms_elapsed(&s->logs.tv_accept, &now);
|
||||||
if (!(s->flags & SF_IGNORE))
|
|
||||||
stream_process_counters(s);
|
stream_process_counters(s);
|
||||||
|
|
||||||
if (s->txn && s->txn->status) {
|
if (s->txn && s->txn->status) {
|
||||||
@ -2431,6 +2432,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
|
|||||||
|
|
||||||
/* update time stats for this stream */
|
/* update time stats for this stream */
|
||||||
stream_update_time_stats(s);
|
stream_update_time_stats(s);
|
||||||
|
}
|
||||||
|
|
||||||
/* the task MUST not be in the run queue anymore */
|
/* the task MUST not be in the run queue anymore */
|
||||||
stream_free(s);
|
stream_free(s);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user