From 8e08a635ebcc07b4b570211432bb584a4c163bad Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 20 Nov 2025 15:32:46 +0100 Subject: [PATCH] MINOR: muxes: Support an optional ALPN string when defining mux protocols When a multiplexer protocol is defined, it is now possible to specify the ALPN it supports, in binary format. This info is optionnal. For now only the h2 and the h1 multiplexers define an ALPN because this will be mandatory for a fix. But this could be used in future for different purpose. This patch will be mandatory for the next fix. --- include/haproxy/connection-t.h | 1 + src/mux_h1.c | 2 +- src/mux_h2.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/haproxy/connection-t.h b/include/haproxy/connection-t.h index 88534dc63..a603966e5 100644 --- a/include/haproxy/connection-t.h +++ b/include/haproxy/connection-t.h @@ -670,6 +670,7 @@ struct mux_proto_list { enum proto_proxy_mode mode; enum proto_proxy_side side; const struct mux_ops *mux; + const char *alpn; /* Default alpn to set by default when the mux protocol is forced (optional, in binary form) */ struct list list; }; diff --git a/src/mux_h1.c b/src/mux_h1.c index 30dcb6086..7b9cddf8d 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -5987,7 +5987,7 @@ static const struct mux_ops mux_h1_ops = { static struct mux_proto_list mux_proto_h1 = { .token = IST("h1"), .mode = PROTO_MODE_HTTP, .side = PROTO_SIDE_BOTH, .mux = &mux_h1_ops }; static struct mux_proto_list mux_proto_http = - { .token = IST(""), .mode = PROTO_MODE_HTTP, .side = PROTO_SIDE_BOTH, .mux = &mux_http_ops }; + { .token = IST(""), .mode = PROTO_MODE_HTTP, .side = PROTO_SIDE_BOTH, .mux = &mux_http_ops, .alpn = "\010http/1.1" }; INITCALL1(STG_REGISTER, register_mux_proto, &mux_proto_h1); INITCALL1(STG_REGISTER, register_mux_proto, &mux_proto_http); diff --git a/src/mux_h2.c b/src/mux_h2.c index 2a57f41a8..39119ce4f 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -8717,7 +8717,7 @@ static const struct mux_ops h2_ops = { }; static struct mux_proto_list mux_proto_h2 = - { .token = IST("h2"), .mode = PROTO_MODE_HTTP, .side = PROTO_SIDE_BOTH, .mux = &h2_ops }; + { .token = IST("h2"), .mode = PROTO_MODE_HTTP, .side = PROTO_SIDE_BOTH, .mux = &h2_ops, .alpn = "\002h2" }; INITCALL1(STG_REGISTER, register_mux_proto, &mux_proto_h2); -- 2.47.3