changeset 8590:44991d728899 quic

QUIC: account packet header length in amplification limit. This is the restoration of 02ee77f8d53d accidentally reverted by 93be5658a250.
author Vladimir Homutov <vl@nginx.com>
date Mon, 19 Oct 2020 12:19:38 +0300
parents 93be5658a250
children ffa14521990e
files src/event/ngx_event_quic.c src/event/ngx_event_quic.h
diffstat 2 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c
+++ b/src/event/ngx_event_quic.c
@@ -3757,6 +3757,7 @@ ngx_quic_output_frames(ngx_connection_t 
     hlen = (f->level == ssl_encryption_application) ? NGX_QUIC_MAX_SHORT_HEADER
                                                     : NGX_QUIC_MAX_LONG_HEADER;
     hlen += EVP_GCM_TLS_TAG_LEN;
+    hlen -= NGX_QUIC_MAX_CID_LEN - qc->scid.len;
 
     do {
         len = 0;
@@ -3786,7 +3787,7 @@ ngx_quic_output_frames(ngx_connection_t 
                  * send more than three times the data it receives;
                  */
 
-                if (((c->sent + len + f->len) / 3) > qc->received) {
+                if (((c->sent + hlen + len + f->len) / 3) > qc->received) {
                     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
                                    "quic hit amplification limit"
                                    " received %uz sent %O",
--- a/src/event/ngx_event_quic.h
+++ b/src/event/ngx_event_quic.h
@@ -54,7 +54,8 @@
 
 #define NGX_QUIC_STREAM_BUFSIZE              65536
 
-#define NGX_QUIC_SERVER_CID_LEN              20
+#define NGX_QUIC_MAX_CID_LEN                 20
+#define NGX_QUIC_SERVER_CID_LEN              NGX_QUIC_MAX_CID_LEN
 
 #define NGX_QUIC_SR_TOKEN_LEN                16