From: Christopher Faulet Date: Tue, 4 Oct 2022 09:24:46 +0000 (+0200) Subject: REORG: mux-h1: Reorg the H1C structure X-Git-Tag: v2.7-dev9~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=089cc6e8051598a47dd7718d4560b8078bf50a5b;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/mux_h1.c b/src/mux_h1.c index ac415fa383..b3b4b5a1bd 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; + struct h1s *h1s; /* H1 stream descriptor */ + struct task *task; /* timeout management task */ + 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 proxy *px; - 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 */ + unsigned int errcode; /* Status code when an error occurred at the H1 connection level */ - struct h1s *h1s; /* H1 stream descriptor */ - struct task *task; /* timeout management task */ - struct h1_counters *px_counters; /* h1 counters attached to proxy */ 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 */