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.
diff --git a/src/connection.c b/src/connection.c
index 7bdd6f0..33f3b22 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -1308,16 +1308,26 @@
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;