]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
REORG: mux-h1: Reorg the H1C structure
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 4 Oct 2022 09:24:46 +0000 (11:24 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 17 Nov 2022 13:33:14 +0000 (14:33 +0100)
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

index ac415fa383f178f349e71971fb73afd9c4cb5bdc..b3b4b5a1bd350e2d01d427e06d32a363fa10ff8a 100644 (file)
 /* 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 */