From 78d5c86b7877506d1e07465238d54aaebc1c0ac2 Mon Sep 17 00:00:00 2001 From: William Manley Date: Wed, 5 Jun 2024 21:34:20 +0100 Subject: [PATCH] MINOR?: stconn/connection: Fix suspect change causing timeouts This fixes an issue I've had where if a connection was idle for ~23s it would get in a bad state. I don't understand this code, so I'm not sure exactly why it was failing. I discovered this by bisecting to identify the commit that caused the regression between 2.9 and 3.0. The commit is d2c3f8dde7c2474616c0ea51234e6ba9433a4bc1: "MINOR: stconn/connection: Move shut modes at the SE descriptor level" - a part of v3.0-dev8. It seems to be an innocent renaming, so I looked through it and this stood out as suspect: - if (mode != CO_SHW_NORMAL) + if (mode & SE_SHW_NORMAL) It looks like the not went missing here, so this patch reverses that condition. It fixes my test. I don't quite understand what this is doing or is for so I can't write a regression test or decent commit message. Hopefully someone else will be able to pick this up from where I've left it. --- src/mux_h1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mux_h1.c b/src/mux_h1.c index 6bdaf7187a1ac..2928751a5b3a9 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -4376,7 +4376,7 @@ static void h1_shut(struct stconn *sc, enum se_shut_mode mode, struct se_abort_i do_shutw: h1_close(h1c); - if (mode & SE_SHW_NORMAL) + if (!(mode & SE_SHW_NORMAL)) h1c->flags |= H1C_F_SILENT_SHUT; if (!b_data(&h1c->obuf))