]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MAJOR: connection: remove the addr field
authorWilly Tarreau <w@1wt.eu>
Wed, 17 Jul 2019 17:06:58 +0000 (19:06 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 19 Jul 2019 11:50:09 +0000 (13:50 +0200)
Now addresses are dynamically allocated when needed. Each connection is
created with src=dst=NULL, these entries are allocated on the fly, and
released when the connection is released.

include/proto/connection.h
include/types/connection.h

index 6d2e78401a552b50888c62c6921ff404de0e05cd..bbb9759acd33830914b9f7eaf601982a639cf480 100644 (file)
@@ -469,8 +469,8 @@ static inline void conn_init(struct connection *conn)
        conn->send_wait = NULL;
        conn->recv_wait = NULL;
        conn->idle_time = 0;
-       conn->src = &conn->addr.from;
-       conn->dst = &conn->addr.to;
+       conn->src = NULL;
+       conn->dst = NULL;
 }
 
 /* sets <owner> as the connection's owner */
@@ -614,6 +614,9 @@ static inline void conn_free(struct connection *conn)
                session_unown_conn(sess, conn);
        }
 
+       sockaddr_free(&conn->src);
+       sockaddr_free(&conn->dst);
+
        /* By convention we always place a NULL where the ctx points to if the
         * mux is null. It may have been used to store the connection as a
         * stream_interface's end point for example.
index 816e06d0a8edbac5173d9b56543bf8c4818f1a88..f8e4c07f93281f425283991f88b7b28c2c189a7b 100644 (file)
@@ -461,10 +461,6 @@ struct connection {
        void (*destroy_cb)(struct connection *conn);  /* callback to notify of imminent death of the connection */
        struct sockaddr_storage *src; /* source address (pool), when known, otherwise NULL */
        struct sockaddr_storage *dst; /* destination address (pool), when known, otherwise NULL */
-       struct {
-               struct sockaddr_storage from;   /* client address, or address to spoof when connecting to the server */
-               struct sockaddr_storage to;     /* address reached by the client, or address to connect to */
-       } addr; /* addresses of the remote side, client for producer and server for consumer */
        unsigned int idle_time;                 /* Time the connection was added to the idle list, or 0 if not in the idle list */
 };