]> git.kaiwu.me - nginx.git/commitdiff
QUIC: fixed PATH_RESPONSE frame expansion.
authorVladimir Homutov <vl@nginx.com>
Thu, 11 Nov 2021 12:15:07 +0000 (15:15 +0300)
committerVladimir Homutov <vl@nginx.com>
Thu, 11 Nov 2021 12:15:07 +0000 (15:15 +0300)
The PATH_RESPONSE frame must be expanded to 1200, except the case
when anti-amplification limit is in effect, i.e. on unvalidated paths.

Previously, the anti-amplification limit was always applied.

src/event/quic/ngx_event_quic_migration.c

index 050b785a669600d667aae0b9dbdc49efe2b16d4e..bea51081d4a9ab316f2e77bf917c97ff03f28236 100644 (file)
@@ -47,12 +47,20 @@ ngx_quic_handle_path_challenge_frame(ngx_connection_t *c,
     path = qsock->path;
 
     /*
+     * An endpoint MUST expand datagrams that contain a PATH_RESPONSE frame
+     * to at least the smallest allowed maximum datagram size of 1200 bytes.
+     * ...
      * An endpoint MUST NOT expand the datagram containing the PATH_RESPONSE
      * if the resulting data exceeds the anti-amplification limit.
      */
-    max = path->received * 3;
-    max = (path->sent >= max) ? 0 : max - path->sent;
-    pad = ngx_min(1200, max);
+    if (path->state != NGX_QUIC_PATH_VALIDATED) {
+        max = path->received * 3;
+        max = (path->sent >= max) ? 0 : max - path->sent;
+        pad = ngx_min(1200, max);
+
+    } else {
+        pad = 1200;
+    }
 
     sent = ngx_quic_frame_sendto(c, &frame, pad, path->sockaddr, path->socklen);
     if (sent < 0) {