Andrey Kolyshkin
February 08, 2022 06:12AM
Hello.

This patch is strange.
1. ngx_quic_revert_send can set to ctx an uninitialized value from
preserved_pnum. (example if min > len and i = 0, only 0 element is filled
in preserved_pnum but restored all)
2. ngx_quic_revert_send will restored pnum for ctx that have already called
ngx_quic_output_packet and the packet with this pnum will be queued.
(example if min > len and i = 1)


On Wed, Feb 2, 2022 at 2:07 PM Sergey Kandaurov <pluknet@nginx.com> wrote:

>
> > On 2 Feb 2022, at 13:55, Vladimir Homutov <vl@nginx.com> wrote:
> >
> > # HG changeset patch
> > # User Vladimir Homutov <vl@nginx.com>
> > # Date 1643796973 -10800
> > # Wed Feb 02 13:16:13 2022 +0300
> > # Branch quic
> > # Node ID fbfbcf66990e8964bcf308f3869f37d1a1acceeb
> > # Parent 8c6645ecaeb6cbf27976fd9035440bfcab943117
> > QUIC: fixed padding of initial packets in case of limited path.
> >
> > Previously, non-padded initial packet could be sent as a result of the
> > following situation:
> >
> > - initial queue is not empty (so padding to 1200 is required)
> > - handhsake queue is not empty (so padding is to be added after h/s
> packet)
>
> handshake
>
> > - path is limited
> >
> > If serializing handshake packet would violate path limit, such packet was
> > omitted, and the non-padded initial packet was sent.
> >
> > The fix is to avoid sending the packet at all in such case. This
> follows the
> > original intention introduced in c5155a0cb12f.
> >
> > diff --git a/src/event/quic/ngx_event_quic_output.c
> b/src/event/quic/ngx_event_quic_output.c
> > --- a/src/event/quic/ngx_event_quic_output.c
> > +++ b/src/event/quic/ngx_event_quic_output.c
> > @@ -158,7 +158,14 @@ ngx_quic_create_datagrams(ngx_connection
> > ? NGX_QUIC_MIN_INITIAL_SIZE - (p - dst) : 0;
> >
> > if (min > len) {
> > - continue;
> > + /* padding can't be applied - avoid sending the packet
> */
> > +
> > + for (i = 0; i < NGX_QUIC_SEND_CTX_LAST; i++) {
> > + ctx = &qc->send_ctx[i];
> > + ngx_quic_revert_send(c, ctx, preserved_pnum[i]);
>
> this could be simplified to reduce ctx variable:
> ngx_quic_revert_send(c, &qc->send_ctx[i], preserved_pnum[i]);
>
> but it won't fit into 80 line, so that's good just as well
>
> > + }
> > +
> > + return NGX_OK;
> > }
> >
> > n = ngx_quic_output_packet(c, ctx, p, len, min);
> >
>
> --
> Sergey Kandaurov
>
> _______________________________________________
> nginx-devel mailing list -- nginx-devel@nginx.org
> To unsubscribe send an email to nginx-devel-leave@nginx.org
>


--
Best regards, Andrey
_______________________________________________
nginx-devel mailing list -- nginx-devel@nginx.org
To unsubscribe send an email to nginx-devel-leave@nginx.org
Subject Author Views Posted

[QUIC] padding of Initial packets

Vladimir Homutov 424 February 02, 2022 05:58AM

Re: [QUIC] padding of Initial packets

Sergey Kandaurov 145 February 02, 2022 06:10AM

Re: [QUIC] padding of Initial packets

Andrey Kolyshkin 118 February 08, 2022 06:12AM

Re: [QUIC] padding of Initial packets

Vladimir Homutov 112 February 08, 2022 07:46AM

Re: [QUIC] padding of Initial packets

Vladimir Homutov 184 February 09, 2022 08:38AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 187
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready