]> git.kaiwu.me - nginx.git/commitdiff
QUIC: fixed output context restoring.
authorVladimir Homutov <vl@nginx.com>
Wed, 9 Feb 2022 12:53:21 +0000 (15:53 +0300)
committerVladimir Homutov <vl@nginx.com>
Wed, 9 Feb 2022 12:53:21 +0000 (15:53 +0300)
The cd8018bc81a5 fixed unintended send of non-padded initial packets,
but failed to restore context properly: only processed contexts need
to be restored.  As a consequence, a packet number could be restored
from uninitialized value.

src/event/quic/ngx_event_quic_output.c

index ebfe0cfc20d53ecd5f6e8217e8da795227f47e91..72a678c3d23d369e0b48bbcae90456f0bfe7f87e 100644 (file)
@@ -165,7 +165,7 @@ ngx_quic_create_datagrams(ngx_connection_t *c)
             if (min > len) {
                 /* padding can't be applied - avoid sending the packet */
 
-                for (i = 0; i < NGX_QUIC_SEND_CTX_LAST; i++) {
+                while (i-- > 0) {
                     ctx = &qc->send_ctx[i];
                     ngx_quic_revert_send(c, ctx, preserved_pnum[i]);
                 }