From 9b8d7a11c0a8513f27780c3be0e43bb2ed5ee040 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 17 Jun 2022 09:36:57 +0200 Subject: [PATCH] MINOR: stream: Rely on stconn flags to abort stream destructive upgrade On destructive connection upgrade, instead of using the new mux name to abort the old stream, we can relay on the stream connector flags. If it is detached after the upgrade, it means the stream will not be resused by the new mux and it must be aborted. This patch may be backported to 2.6. --- src/stream.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/stream.c b/src/stream.c index 2f698482f3..5de7cdda71 100644 --- a/src/stream.c +++ b/src/stream.c @@ -1498,11 +1498,12 @@ int stream_set_http_mode(struct stream *s, const struct mux_proto_list *mux_prot s->req.flags &= ~(CF_READ_PARTIAL|CF_AUTO_CONNECT); s->req.total = 0; s->flags |= SF_IGNORE; - if (strcmp(conn->mux->name, "H2") == 0) { - /* For HTTP/2, destroy the stream connector, disable logging, - * and abort the stream process. Thus it will be - * silently destroyed. The new mux will create new - * streams. + if (sc_ep_test(sc, SE_FL_DETACHED)) { + /* If stream connector is detached, it means it was not + * reused by the new mux. Son destroy it, disable + * logging, and abort the stream process. Thus the + * stream will be silently destroyed. The new mux will + * create new streams. */ s->logs.logwait = 0; s->logs.level = 0;