]> git.kaiwu.me - haproxy.git/commitdiff
MEDIUM: quic: remove deprecated keywords master quic-interop
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 6 Jul 2026 14:35:39 +0000 (16:35 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 6 Jul 2026 15:19:24 +0000 (17:19 +0200)
Several QUIC related keywords were removed in 3.4. The legacy options
were marked as deprecated and scheduled for removal in 3.5. This patch
applies this removal for the upcoming 3.5.

doc/configuration.txt
src/cfgparse-quic.c

index e400ad4b797baf4536fe10e4053a72bf2b94bff4..5ff19f9262d5c3ffdcda0f2983a85c4c30a57854 100644 (file)
@@ -1955,10 +1955,6 @@ The following keywords are supported in the "global" section :
    - tune.quic.be.stream.rxbuf
    - tune.quic.be.tx.pacing
    - tune.quic.be.tx.udp-gso
-   - tune.quic.cc.cubic.min-losses (deprecated)
-   - tune.quic.cc-hystart (deprecated)
-   - tune.quic.disable-tx-pacing (deprecated)
-   - tune.quic.disable-udp-gso (deprecated)
    - tune.quic.fe.cc.cubic-min-losses
    - tune.quic.fe.cc.hystart
    - tune.quic.fe.cc.max-frame-loss
@@ -1974,18 +1970,8 @@ The following keywords are supported in the "global" section :
    - tune.quic.fe.stream.rxbuf
    - tune.quic.fe.tx.pacing
    - tune.quic.fe.tx.udp-gso
-   - tune.quic.frontend.max-data-size (deprecated)
-   - tune.quic.frontend.max-idle-timeout (deprecated)
-   - tune.quic.frontend.max-streams-bidi (deprecated)
-   - tune.quic.frontend.max-tx-mem (deprecated)
-   - tune.quic.frontend.stream-data-ratio (deprecated)
-   - tune.quic.frontend.default-max-window-size (deprecated)
    - tune.quic.listen
-   - tune.quic.max-frame-loss (deprecated)
    - tune.quic.mem.tx-max
-   - tune.quic.reorder-ratio (deprecated)
-   - tune.quic.retry-threshold (deprecated)
-   - tune.quic.socket-owner (deprecated)
    - tune.quic.zero-copy-fwd-send
    - tune.renice.runtime
    - tune.renice.startup
@@ -5142,22 +5128,12 @@ tune.quic.fe.cc.cubic-min-losses <number>
   compare some metrics. Never go beyond 2 without an expert's prior analysis of
   the situation. The default and minimum value is 1. Always use 1.
 
-tune.quic.cc.cubic.min-losses <number> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.cc.hystart { on | off }
 tune.quic.fe.cc.hystart { on | off }
   Enables ('on') or disabled ('off') the HyStart++ (RFC 9406) algorithm for
   QUIC connections used as a replacement for the slow start phase of congestion
   control algorithms which may cause high packet loss. It is disabled by default.
 
-tune.quic.cc-hystart { on | off } (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.cc.max-frame-loss <number>
 tune.quic.fe.cc.max-frame-loss <number>
   Sets the limit for which a single QUIC frame can be marked as lost. If
@@ -5165,11 +5141,6 @@ tune.quic.fe.cc.max-frame-loss <number>
 
   The default value is 10.
 
-tune.quic.max-frame-loss <number> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.cc.max-win-size <size>
 tune.quic.fe.cc.max-win-size <size>
   Sets the default maximum window size for the congestion controller of a
@@ -5185,11 +5156,6 @@ tune.quic.fe.cc.max-win-size <size>
 
   See also the "quic-cc-algo" bind and server options.
 
-tune.quic.frontend.default-max-window-size <size> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.cc.reorder-ratio <0..100, in percent>
 tune.quic.fe.cc.reorder-ratio <0..100, in percent>
   The ratio applied to the packet reordering threshold calculated. It may
@@ -5197,11 +5163,6 @@ tune.quic.fe.cc.reorder-ratio <0..100, in percent>
 
   The default value is 50.
 
-tune.quic.reorder-ratio <0..100, in percent> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.max-idle-timeout <timeout>
 tune.quic.fe.max-idle-timeout <timeout>
   Sets the QUIC max_idle_timeout transport parameters on either frontend or
@@ -5215,11 +5176,6 @@ tune.quic.fe.max-idle-timeout <timeout>
 
   The default value is 30s.
 
-tune.quic.frontend.max-idle-timeout <timeout> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.sec.glitches-threshold <number>
 tune.quic.fe.sec.glitches-threshold <number>
   Sets the threshold for the number of glitches per connection either on
@@ -5235,11 +5191,6 @@ tune.quic.fe.sec.glitches-threshold <number>
 
   See also: fc_glitches, tune.glitches.kill.cpu-usage
 
-tune.quic.frontend.glitches-threshold <number> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.fe.sec.retry-threshold <number>
   Dynamically enables the Retry feature for all the configured QUIC listeners
   as soon as this number of half open connections is reached. A half open
@@ -5254,11 +5205,6 @@ tune.quic.fe.sec.retry-threshold <number>
   See https://www.rfc-editor.org/rfc/rfc9000.html#section-8.1.2 for more
   information about QUIC retry.
 
-tune.quic.retry-threshold <number> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.fe.sock-per-conn { default-on | force-off }
   Specifies globally how QUIC frontend connections will use socket for
   receive/send operations. Connections can share listener socket or each
@@ -5288,12 +5234,6 @@ tune.quic.fe.sock-per-conn { default-on | force-off }
   "force-off" is used globally, it will be applied on every listener instance,
   regardless of their individual configuration.
 
-tune.quic.socket-owner { connection | listener } (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. The newer
-  option is named "tune.quic.fe.sock-per-conn", with legacy value "connection"
-  corresponding to "default-on" and "listener" to "force-off".
-
 tune.quic.be.stream.data-ratio <0..100, in percent>
 tune.quic.fe.stream.data-ratio <0..100, in percent>
   This setting allows to configure the hard limit of the number of data bytes
@@ -5314,11 +5254,6 @@ tune.quic.fe.stream.data-ratio <0..100, in percent>
             "tune.quic.be.stream.max-concurrent",
             "tune.quic.fe.stream.max-concurrent"
 
-tune.quic.frontend.stream-data-ratio  <0..100, in percent> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.stream.max-concurrent <number>
 tune.quic.fe.stream.max-concurrent <number>
   On frontend side, this is used as the value for the advertised
@@ -5362,11 +5297,6 @@ tune.quic.fe.stream.max-total <number>
   The default value is 0 which implies no specific limit outside of the QUIC
   protocol encoding limitation (2^60, more than a billion billion).
 
-tune.quic.frontend.max-streams-bidi <number> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.stream.rxbuf <size>
 tune.quic.fe.stream.rxbuf <size>
   This setting is the hard limit for the number of data bytes in flight over a
@@ -5384,11 +5314,6 @@ tune.quic.fe.stream.rxbuf <size>
             "tune.quic.fe.stream.max-concurrent",
             "tune.quic.be.stream.data-ratio", "tune.quic.fe.stream.data-ratio"
 
-tune.quic.frontend.max-data-size <size> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.tx.pacing { on | off }
 tune.quic.fe.tx.pacing { on | off }
   Enables ('on') or disables ('off') pacing support for QUIC emission. By
@@ -5400,11 +5325,6 @@ tune.quic.fe.tx.pacing { on | off }
 
   See also the "quic-cc-algo" bind and server options.
 
-tune.quic.disable-tx-pacing (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.be.tx.udp-gso { on | off }
 tune.quic.fe.tx.udp-gso { on | off }
   Enables ('on') or disables ('off') UDP GSO support for QUIC emission. By
@@ -5413,11 +5333,6 @@ tune.quic.fe.tx.udp-gso { on | off }
   be useful to disable it on developers suggestion when suspecting an issue on
   emission.
 
-tune.quic.disable-udp-gso (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.listen { on | off }
   Disable QUIC transport protocol on the frontend side. All the QUIC listeners
   will still be created, but they won't listen for incoming datagrams. Hence,
@@ -5437,11 +5352,6 @@ tune.quic.mem.tx-max <size>
   connection will always be able to use a window of at least 2 datagrams, so a
   proper maxconn should be used in conjunction.
 
-tune.quic.frontend.max-tx-mem <size> (deprecated)
-  This keyword has been deprecated in 3.3 and will be removed in 3.5. It is
-  part of the streamlining process apply on QUIC configuration. If used, this
-  setting will only be applied on frontend connections.
-
 tune.quic.zero-copy-fwd-send { on | off }
   Enables ('on') of disabled ('off') the zero-copy sends of data for the QUIC
   multiplexer. It is enabled by default.
index f06a4847dc0d54c33a50ba87cb465396571f62a4..7b9da28c7365fc9cdf1771da49cda0b83e59a923 100644 (file)
@@ -292,33 +292,6 @@ static int cfg_parse_quic_tune_sock_per_conn(char **args, int section_type,
        return 0;
 }
 
-/* parse "tune.quic.socket-owner", accepts "listener" or "connection" */
-static int cfg_parse_quic_tune_socket_owner(char **args, int section_type,
-                                            struct proxy *curpx,
-                                            const struct proxy *defpx,
-                                            const char *file, int line, char **err)
-{
-       if (too_many_args(1, args, err, NULL))
-               return -1;
-
-       memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                      "Please use the newer keyword syntax 'tune.quic.fe.sock-per-conn'.", args[0]);
-
-       if (strcmp(args[1], "connection") == 0) {
-               quic_tune.fe.opts |= QUIC_TUNE_FE_SOCK_PER_CONN;
-       }
-       else if (strcmp(args[1], "listener") == 0) {
-               quic_tune.fe.opts &= ~QUIC_TUNE_FE_SOCK_PER_CONN;
-       }
-       else {
-               memprintf(err, "'%s' expects either 'listener' or 'connection' but got '%s'.", args[0], args[1]);
-               return -1;
-       }
-
-       /* Returns 1 to ensure deprecated warning is displayed. */
-       return 1;
-}
-
 /* Must be used to parse tune.quic.* setting which requires a time
  * as value.
  * Return -1 on alert, or 0 if succeeded.
@@ -362,13 +335,6 @@ static int cfg_parse_quic_time(char **args, int section_type,
                                                 &quic_tune.fe.max_idle_timeout;
                *ptr = time;
        }
-       /* legacy options */
-       else if (strcmp(name + prefix_len, "frontend.max-idle-timeout") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.max-idle-timeout'.", args[0]);
-               quic_tune.fe.max_idle_timeout = time;
-               ret = 1;
-       }
        else {
                memprintf(err, "'%s' keyword not handled (please report this bug).", args[0]);
                ret = -1;
@@ -489,105 +455,6 @@ static int cfg_parse_quic_tune_setting(char **args, int section_type,
 
                *ptr = arg;
        }
-
-       /* legacy options */
-       else if (strcmp(suffix, "cc.cubic.min-losses") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.cc.cubic-min-losses'.", args[0]);
-               quic_tune.fe.cc_cubic_min_losses = arg - 1;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "frontend.default-max-window-size") == 0) {
-               unsigned long cwnd;
-               char *end_opt;
-
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.cc.max-win-size'.", args[0]);
-
-               cwnd = parse_window_size(args[0], args[1], &end_opt, err);
-               if (!cwnd)
-                       return -1;
-               if (*end_opt != '\0') {
-                       memprintf(err, "'%s' : expects an integer value with an optional suffix 'k', 'm' or 'g'", args[0]);
-                       return -1;
-               }
-
-               quic_tune.fe.cc_max_win_size = cwnd;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "frontend.glitches-threshold") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.sec.glitches-threshold'.", args[0]);
-               quic_tune.fe.sec_glitches_threshold = arg;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "frontend.max-data-size") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.stream.rxbuf'.", args[0]);
-               if ((errptr = parse_size_err(args[1], &arg))) {
-                       memprintf(err, "'%s': unexpected character '%c' in size argument '%s'.",
-                                 args[0], *errptr, args[1]);
-                       return -1;
-               }
-
-               quic_tune.fe.stream_rxbuf = arg;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "frontend.max-streams-bidi") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.stream.max-concurrent'.", args[0]);
-               quic_tune.fe.stream_max_concurrent = arg;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "frontend.max-tx-mem") == 0) {
-               ullong max_mem;
-
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.mem.tx-max'.", args[0]);
-
-               if ((errptr = parse_size_err(args[1], &max_mem))) {
-                       memprintf(err, "'%s': unexpected character '%c' in size argument '%s'.",
-                                 args[0], *errptr, args[1]);
-                       return -1;
-               }
-
-               quic_tune.mem_tx_max = max_mem;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "frontend.stream-data-ratio") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.stream.data-ratio'.", args[0]);
-
-               if (arg < 1 || arg > 100) {
-                       memprintf(err, "'%s' expects an integer argument between 1 and 100.", args[0]);
-                       return -1;
-               }
-               quic_tune.fe.stream_data_ratio = arg;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "max-frame-loss") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.cc.max-frame-loss'.", args[0]);
-               quic_tune.fe.cc_max_frame_loss = arg;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "reorder-ratio") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.cc.reorder-ratio'.", args[0]);
-               if (arg > 100) {
-                       memprintf(err, "'%s' expects an integer argument between 0 and 100.", args[0]);
-                       return -1;
-               }
-
-               quic_tune.fe.cc_reorder_ratio = arg;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "retry-threshold") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.sec.retry-threshold'.", args[0]);
-               quic_tune.fe.sec_retry_threshold = arg;
-               ret = 1;
-       }
        else {
                memprintf(err, "'%s' keyword not handled (please report this bug).", args[0]);
                return -1;
@@ -596,39 +463,6 @@ static int cfg_parse_quic_tune_setting(char **args, int section_type,
        return ret;
 }
 
-static int cfg_parse_quic_tune_setting0(char **args, int section_type,
-                                        struct proxy *curpx,
-                                        const struct proxy *defpx,
-                                        const char *file, int line, char **err)
-{
-       int ret = 0;
-       int prefix_len = strlen("tune.quic.");
-       const char *suffix;
-
-       if (too_many_args(0, args, err, NULL))
-               return -1;
-
-       suffix = args[0] + prefix_len;
-       if (strcmp(suffix, "disable-tx-pacing") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.tx.pacing'.", args[0]);
-               quic_tune.fe.fb_opts &= ~QUIC_TUNE_FB_TX_PACING;
-               ret = 1;
-       }
-       else if (strcmp(suffix, "disable-udp-gso") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.tx.udp-gso'.", args[0]);
-               quic_tune.fe.fb_opts &= ~QUIC_TUNE_FB_TX_UDP_GSO;
-               ret = 1;
-       }
-       else {
-               memprintf(err, "'%s' keyword unhandled (please report this bug).", args[0]);
-               return -1;
-       }
-
-       return ret;
-}
-
 /* config parser for global "tune.quic.* {on|off}" */
 static int cfg_parse_quic_tune_on_off(char **args, int section_type, struct proxy *curpx,
                                       const struct proxy *defpx, const char *file, int line,
@@ -691,15 +525,6 @@ static int cfg_parse_quic_tune_on_off(char **args, int section_type, struct prox
                else
                        *ptr &= ~QUIC_TUNE_FB_TX_UDP_GSO;
        }
-       else if (strcmp(suffix, "cc-hystart") == 0) {
-               memprintf(err, "'%s' is deprecated in 3.3 and will be removed in 3.5. "
-                              "Please use the newer keyword syntax 'tune.quic.fe.cc.hystart'.", args[0]);
-               if (on)
-                       quic_tune.fe.fb_opts |= QUIC_TUNE_FB_CC_HYSTART;
-               else
-                       quic_tune.fe.fb_opts &= ~QUIC_TUNE_FB_CC_HYSTART;
-               ret = 1;
-       }
 
        return ret;
 }
@@ -738,23 +563,6 @@ static struct cfg_kw_list cfg_kws = {ILH, {
        { CFG_GLOBAL, "tune.quic.be.tx.pacing", cfg_parse_quic_tune_on_off },
        { CFG_GLOBAL, "tune.quic.be.tx.udp-gso", cfg_parse_quic_tune_on_off },
 
-       /* legacy options */
-       { CFG_GLOBAL, "tune.quic.cc-hystart", cfg_parse_quic_tune_on_off },
-       { CFG_GLOBAL, "tune.quic.cc.cubic.min-losses", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.disable-tx-pacing", cfg_parse_quic_tune_setting0 },
-       { CFG_GLOBAL, "tune.quic.disable-udp-gso", cfg_parse_quic_tune_setting0 },
-       { CFG_GLOBAL, "tune.quic.frontend.default-max-window-size", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.frontend.glitches-threshold", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.frontend.max-data-size", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.frontend.max-idle-timeout", cfg_parse_quic_time },
-       { CFG_GLOBAL, "tune.quic.frontend.max-streams-bidi", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.frontend.max-tx-mem", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.frontend.stream-data-ratio", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.max-frame-loss", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.reorder-ratio", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.retry-threshold", cfg_parse_quic_tune_setting },
-       { CFG_GLOBAL, "tune.quic.socket-owner", cfg_parse_quic_tune_socket_owner },
-
        { 0, NULL, NULL }
 }};