From: Aurelien DARRAGON Date: Tue, 26 Mar 2024 09:42:48 +0000 (+0100) Subject: BUG/MINOR: server: 'source' interface ignored from 'default-server' directive X-Git-Tag: v3.0-dev6~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bd98db50785b6cef946d38715b48f72e7ca73a59;p=thirdparty%2Fhaproxy.git BUG/MINOR: server: 'source' interface ignored from 'default-server' directive Sebastien Gross reported that 'interface' keyword ('source' subargument) is silently ignored when used from 'default-server' directive despite the documentation implicitly stating that the keyword should be supported there. When support for 'source' keyword was added to 'default-server' directive in dba97077 ("MINOR: server: Make 'default-server' support 'source' keyword."), we properly duplicated the conn iface_name from the default- server but we forgot to copy the conn iface_len which must be set as well since it is used as setsockopt()'s 'optlen' argument in tcp_connect_server(). It should be backported to all stable versions. --- diff --git a/src/server.c b/src/server.c index 15731b312a..555cae82c6 100644 --- a/src/server.c +++ b/src/server.c @@ -2474,8 +2474,10 @@ static void srv_conn_src_cpy(struct server *srv, const struct server *src) srv->conn_src.bind_hdr_occ = src->conn_src.bind_hdr_occ; srv->conn_src.tproxy_addr = src->conn_src.tproxy_addr; #endif - if (src->conn_src.iface_name != NULL) + if (src->conn_src.iface_name != NULL) { srv->conn_src.iface_name = strdup(src->conn_src.iface_name); + srv->conn_src.iface_len = src->conn_src.iface_len; + } } /*