comparison src/event/ngx_event_quic.c @ 7927:391d06a51bc0 quic

Limited max udp payload size for outgoing packets. This allows to avoid problems with packet fragmentation in real networks. This is a temporary workaround.
author Vladimir Homutov <vl@nginx.com>
date Wed, 10 Jun 2020 21:37:08 +0300
parents 70335ec6e5d4
children 7672ec1e6227
comparison
equal deleted inserted replaced
7926:70335ec6e5d4 7927:391d06a51bc0
428 ngx_log_error(NGX_LOG_INFO, c->log, 0, 428 ngx_log_error(NGX_LOG_INFO, c->log, 0,
429 "quic maximum packet size is invalid"); 429 "quic maximum packet size is invalid");
430 return 0; 430 return 0;
431 } 431 }
432 432
433 if (qc->ctp.max_udp_payload_size > NGX_QUIC_MAX_UDP_PAYLOAD_OUT) {
434 qc->ctp.max_udp_payload_size = NGX_QUIC_MAX_UDP_PAYLOAD_OUT;
435 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0,
436 "quic client maximum packet size truncated");
437 }
438
433 #if (NGX_QUIC_DRAFT_VERSION >= 28) 439 #if (NGX_QUIC_DRAFT_VERSION >= 28)
434 if (qc->scid.len != qc->ctp.initial_scid.len 440 if (qc->scid.len != qc->ctp.initial_scid.len
435 || ngx_memcmp(qc->scid.data, qc->ctp.initial_scid.data, 441 || ngx_memcmp(qc->scid.data, qc->ctp.initial_scid.data,
436 qc->scid.len) != 0) 442 qc->scid.len) != 0)
437 { 443 {
638 qc->ssl = ssl; 644 qc->ssl = ssl;
639 qc->tp = *tp; 645 qc->tp = *tp;
640 qc->streams.handler = handler; 646 qc->streams.handler = handler;
641 647
642 ctp = &qc->ctp; 648 ctp = &qc->ctp;
643 ctp->max_udp_payload_size = NGX_QUIC_MAX_UDP_PAYLOAD_SIZE; 649 ctp->max_udp_payload_size = NGX_QUIC_MAX_UDP_PAYLOAD_OUT;
644 ctp->ack_delay_exponent = NGX_QUIC_DEFAULT_ACK_DELAY_EXPONENT; 650 ctp->ack_delay_exponent = NGX_QUIC_DEFAULT_ACK_DELAY_EXPONENT;
645 ctp->max_ack_delay = NGX_QUIC_DEFAULT_MAX_ACK_DELAY; 651 ctp->max_ack_delay = NGX_QUIC_DEFAULT_MAX_ACK_DELAY;
646 652
647 qc->streams.recv_max_data = qc->tp.initial_max_data; 653 qc->streams.recv_max_data = qc->tp.initial_max_data;
648 654