From 089cc6e8051598a47dd7718d4560b8078bf50a5b Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 4 Oct 2022 11:24:46 +0200 Subject: [PATCH] REORG: mux-h1: Reorg the H1C structure Fields in H1C structure are reorganised to not have the output buffer straddled between to cache lines. There is 4-bytes hole after the flags, but it will be partially filled by an enum representing the H1 connection state. --- src/mux_h1.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/mux_h1.c b/src/mux_h1.c index ac415fa38..b3b4b5a1b 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -35,21 +35,24 @@ /* H1 connection descriptor */ struct h1c { struct connection *conn; - struct proxy *px; - uint32_t flags; /* Connection flags: H1C_F_* */ - unsigned int errcode; /* Status code when an error occurred at the H1 connection level */ - struct buffer ibuf; /* Input buffer to store data before parsing */ - struct buffer obuf; /* Output buffer to store data after reformatting */ - - struct buffer_wait buf_wait; /* Wait list for buffer allocation */ - struct wait_event wait_event; /* To be used if we're waiting for I/Os */ - struct h1s *h1s; /* H1 stream descriptor */ struct task *task; /* timeout management task */ - struct h1_counters *px_counters; /* h1 counters attached to proxy */ + + uint32_t flags; /* Connection flags: H1C_F_* */ + + struct buffer ibuf; /* Input buffer to store data before parsing */ + struct buffer obuf; /* Output buffer to store data after reformatting */ + struct proxy *px; + + unsigned int errcode; /* Status code when an error occurred at the H1 connection level */ + int idle_exp; /* idle expiration date (http-keep-alive or http-request timeout) */ int timeout; /* client/server timeout duration */ int shut_timeout; /* client-fin/server-fin timeout duration */ + + struct h1_counters *px_counters; /* h1 counters attached to proxy */ + struct buffer_wait buf_wait; /* Wait list for buffer allocation */ + struct wait_event wait_event; /* To be used if we're waiting for I/Os */ }; /* H1 stream descriptor */