From 8a4ffa0aabf8509098f95ac78fa48b18f415c42c Mon Sep 17 00:00:00 2001 From: Emmanuel Hocdet Date: Thu, 29 Aug 2019 11:54:51 +0200 Subject: [PATCH] MINOR: send-proxy-v2: sends authority TLV according to TLV received Since patch "7185b789", the authority TLV in a PROXYv2 header from a client connection is stored. Authority TLV sends in PROXYv2 should be taken into account to allow chaining PROXYv2 without droping it. --- src/connection.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/connection.c b/src/connection.c index 7bdd6f0ddf..33f3b2277e 100644 --- a/src/connection.c +++ b/src/connection.c @@ -1308,16 +1308,26 @@ int make_proxy_line_v2(char *buf, int buf_len, struct server *srv, struct connec ret += make_tlv(&buf[ret], (buf_len - ret), PP2_TYPE_ALPN, value_len, value); } -#ifdef USE_OPENSSL if (srv->pp_opts & SRV_PP_V2_AUTHORITY) { - value = ssl_sock_get_sni(remote); + value = NULL; + if (remote && remote->proxy_authority) { + value = remote->proxy_authority; + value_len = remote->proxy_authority_len; + } +#ifdef USE_OPENSSL + else { + if (value = ssl_sock_get_sni(remote)) + value_len = strlen(value); + } +#endif if (value) { if ((buf_len - ret) < sizeof(struct tlv)) return 0; - ret += make_tlv(&buf[ret], (buf_len - ret), PP2_TYPE_AUTHORITY, strlen(value), value); + ret += make_tlv(&buf[ret], (buf_len - ret), PP2_TYPE_AUTHORITY, value_len, value); } } +#ifdef USE_OPENSSL if (srv->pp_opts & SRV_PP_V2_SSL) { struct tlv_ssl *tlv; int ssl_tlv_len = 0; -- 2.39.5