Le 05/06/2024 à 22:55, William Manley a écrit :
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 881fff77b..6714d4e98 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -4320,7 +4320,7 @@ static void h1_shutw(struct stconn *sc, enum se_shut_mode 
mode)
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))

Thanks!

I merged your fix. I choose to keep your message with just a comment at the end. However, I changed the subject to "BUG/MEDIUM: stconn/mux-h1: Fix suspect change causing timeouts".

It is part of the 3.0.1.

--
Christopher Faulet


Reply via email to