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:
Christopher Faulet 2021-01-21 17:10:44 +01:00
parent 37286a5ac5
commit 341064eb16

View File

@ -2399,8 +2399,9 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
DISGUISE(write(1, trash.area, trash.data));
}
if (!(s->flags & SF_IGNORE)) {
s->logs.t_close = tv_ms_elapsed(&s->logs.tv_accept, &now);
if (!(s->flags & SF_IGNORE))
stream_process_counters(s);
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 */
stream_update_time_stats(s);
}
/* the task MUST not be in the run queue anymore */
stream_free(s);