]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
DIET/MINOR: connection: rearrange a few fields to save 8 bytes in the struct
authorWilly Tarreau <w@1wt.eu>
Fri, 6 Dec 2013 20:09:57 +0000 (21:09 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 9 Dec 2013 15:06:15 +0000 (16:06 +0100)
By moving the error code to 8 bits the send_proxy_ofs to 16 bits, and
moving them just after the obj_type, we can save 8 bytes in the struct
connection, down from 328 to 320.

include/types/connection.h

index 15579243e19e501ad8275d9e733bbf1d5a11d756..eb99cc9ac1c61974c52889106d779d1b6b72bd9e 100644 (file)
@@ -242,6 +242,8 @@ struct conn_src {
  */
 struct connection {
        enum obj_type obj_type;       /* differentiates connection from applet context */
+       unsigned char err_code;       /* CO_ER_* */
+       signed short send_proxy_ofs;  /* <0 = offset to (re)send from the end, >0 = send all */
        unsigned int flags;           /* CO_FL_* */
        const struct protocol *ctrl;  /* operations at the socket layer */
        const struct xprt_ops *xprt;  /* operations at the transport layer */
@@ -249,13 +251,12 @@ struct connection {
        void *xprt_ctx;               /* general purpose pointer, initialized to NULL */
        void *owner;                  /* pointer to upper layer's entity (eg: stream interface) */
        int xprt_st;                  /* transport layer state, initialized to zero */
-       int send_proxy_ofs;           /* <0 = offset to (re)send from the end, >0 = send all */
+
        union {                       /* definitions which depend on connection type */
                struct {              /*** information used by socket-based connections ***/
                        int fd;       /* file descriptor for a stream driver when known */
                } sock;
        } t;
-       unsigned int err_code;        /* CO_ER_* */
        enum obj_type *target;        /* the target to connect to (server, proxy, applet, ...) */
        struct {
                struct sockaddr_storage from;   /* client address, or address to spoof when connecting to the server */