aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVladimir Homutov <vl@nginx.com>2021-02-08 20:48:25 +0300
committerVladimir Homutov <vl@nginx.com>2021-02-08 20:48:25 +0300
commitda5b655f6c246119f99db652c675690f349cdcd7 (patch)
tree824351d7fd9dec242fc446ff0dd43eb71880caf6 /src
parent8a3c4c6d8cecd9d777341199cfcec32bbe9bf518 (diff)
downloadnginx-da5b655f6c246119f99db652c675690f349cdcd7.tar.gz
nginx-da5b655f6c246119f99db652c675690f349cdcd7.zip
QUIC: updated list of transport parameters to be sent.
The "max_ack_delay", "ack_delay_exponent", and "max_udp_payload_size" transport parameters were not communicated to client. The "disable_active_migration" and "active_connection_id_limit" parameters were not saved into zero-rtt context.
Diffstat (limited to 'src')
-rw-r--r--src/event/quic/ngx_event_quic_transport.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/event/quic/ngx_event_quic_transport.c b/src/event/quic/ngx_event_quic_transport.c
index cc9b35114..a849a20dc 100644
--- a/src/event/quic/ngx_event_quic_transport.c
+++ b/src/event/quic/ngx_event_quic_transport.c
@@ -1894,9 +1894,8 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp,
len += ngx_quic_tp_len(NGX_QUIC_TP_MAX_IDLE_TIMEOUT,
tp->max_idle_timeout);
- if (clen) {
- *clen = len;
- }
+ len += ngx_quic_tp_len(NGX_QUIC_TP_MAX_UDP_PAYLOAD_SIZE,
+ tp->max_udp_payload_size);
if (tp->disable_active_migration) {
len += ngx_quic_varint_len(NGX_QUIC_TP_DISABLE_ACTIVE_MIGRATION);
@@ -1906,6 +1905,17 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp,
len += ngx_quic_tp_len(NGX_QUIC_TP_ACTIVE_CONNECTION_ID_LIMIT,
tp->active_connection_id_limit);
+ /* transport parameters listed above will be saved in 0-RTT context */
+ if (clen) {
+ *clen = len;
+ }
+
+ len += ngx_quic_tp_len(NGX_QUIC_TP_MAX_ACK_DELAY,
+ tp->max_ack_delay);
+
+ len += ngx_quic_tp_len(NGX_QUIC_TP_ACK_DELAY_EXPONENT,
+ tp->ack_delay_exponent);
+
#if (NGX_QUIC_DRAFT_VERSION >= 28)
len += ngx_quic_tp_strlen(NGX_QUIC_TP_ORIGINAL_DCID, tp->original_dcid);
len += ngx_quic_tp_strlen(NGX_QUIC_TP_INITIAL_SCID, tp->initial_scid);
@@ -1948,6 +1958,9 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp,
ngx_quic_tp_vint(NGX_QUIC_TP_MAX_IDLE_TIMEOUT,
tp->max_idle_timeout);
+ ngx_quic_tp_vint(NGX_QUIC_TP_MAX_UDP_PAYLOAD_SIZE,
+ tp->max_udp_payload_size);
+
if (tp->disable_active_migration) {
ngx_quic_build_int(&p, NGX_QUIC_TP_DISABLE_ACTIVE_MIGRATION);
ngx_quic_build_int(&p, 0);
@@ -1956,6 +1969,12 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp,
ngx_quic_tp_vint(NGX_QUIC_TP_ACTIVE_CONNECTION_ID_LIMIT,
tp->active_connection_id_limit);
+ ngx_quic_tp_vint(NGX_QUIC_TP_MAX_ACK_DELAY,
+ tp->max_ack_delay);
+
+ ngx_quic_tp_vint(NGX_QUIC_TP_ACK_DELAY_EXPONENT,
+ tp->ack_delay_exponent);
+
#if (NGX_QUIC_DRAFT_VERSION >= 28)
ngx_quic_tp_str(NGX_QUIC_TP_ORIGINAL_DCID, tp->original_dcid);
ngx_quic_tp_str(NGX_QUIC_TP_INITIAL_SCID, tp->initial_scid);