mirror of
https://github.com/nginx/nginx.git
synced 2025-01-21 11:42:59 +08:00
QUIC: keep the entire packet size in pkt->len.
Previously pkt->len kept the length of the packet remainder starting from pkt->raw->pos.
This commit is contained in:
parent
6c0be4b4cf
commit
80958b29a2
@ -1676,7 +1676,7 @@ ngx_quic_input(ngx_connection_t *c, ngx_buf_t *b)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* b->pos is at header end, adjust by actual packet length */
|
/* b->pos is at header end, adjust by actual packet length */
|
||||||
b->pos += pkt.len;
|
b->pos = pkt.data + pkt.len;
|
||||||
p = ngx_quic_skip_zero_padding(b);
|
p = ngx_quic_skip_zero_padding(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -997,6 +997,7 @@ ngx_quic_decrypt(ngx_quic_header_t *pkt, ngx_ssl_conn_t *ssl_conn,
|
|||||||
uint64_t *largest_pn)
|
uint64_t *largest_pn)
|
||||||
{
|
{
|
||||||
u_char clearflags, *p, *sample;
|
u_char clearflags, *p, *sample;
|
||||||
|
size_t len;
|
||||||
uint8_t badflags;
|
uint8_t badflags;
|
||||||
uint64_t pn, lpn;
|
uint64_t pn, lpn;
|
||||||
ngx_int_t pnl, rc, key_phase;
|
ngx_int_t pnl, rc, key_phase;
|
||||||
@ -1012,6 +1013,7 @@ ngx_quic_decrypt(ngx_quic_header_t *pkt, ngx_ssl_conn_t *ssl_conn,
|
|||||||
secret = pkt->secret;
|
secret = pkt->secret;
|
||||||
|
|
||||||
p = pkt->raw->pos;
|
p = pkt->raw->pos;
|
||||||
|
len = pkt->data + pkt->len - p;
|
||||||
|
|
||||||
/* draft-ietf-quic-tls-23#section-5.4.2:
|
/* draft-ietf-quic-tls-23#section-5.4.2:
|
||||||
* the Packet Number field is assumed to be 4 bytes long
|
* the Packet Number field is assumed to be 4 bytes long
|
||||||
@ -1019,7 +1021,7 @@ ngx_quic_decrypt(ngx_quic_header_t *pkt, ngx_ssl_conn_t *ssl_conn,
|
|||||||
* AES-Based and ChaCha20-Based header protections sample 16 bytes
|
* AES-Based and ChaCha20-Based header protections sample 16 bytes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (pkt->len < EVP_GCM_TLS_TAG_LEN + 4) {
|
if (len < EVP_GCM_TLS_TAG_LEN + 4) {
|
||||||
return NGX_DECLINED;
|
return NGX_DECLINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1062,7 +1064,7 @@ ngx_quic_decrypt(ngx_quic_header_t *pkt, ngx_ssl_conn_t *ssl_conn,
|
|||||||
/* packet protection */
|
/* packet protection */
|
||||||
|
|
||||||
in.data = p;
|
in.data = p;
|
||||||
in.len = pkt->len - pnl;
|
in.len = len - pnl;
|
||||||
|
|
||||||
if (ngx_quic_long_pkt(pkt->flags)) {
|
if (ngx_quic_long_pkt(pkt->flags)) {
|
||||||
badflags = clearflags & NGX_QUIC_PKT_LONG_RESERVED_BIT;
|
badflags = clearflags & NGX_QUIC_PKT_LONG_RESERVED_BIT;
|
||||||
|
@ -511,7 +511,6 @@ ngx_quic_parse_short_header(ngx_quic_header_t *pkt, ngx_str_t *dcid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pkt->raw->pos = p;
|
pkt->raw->pos = p;
|
||||||
pkt->len = end - p;
|
|
||||||
|
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
@ -561,7 +560,7 @@ ngx_quic_parse_initial_header(ngx_quic_header_t *pkt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pkt->raw->pos = p;
|
pkt->raw->pos = p;
|
||||||
pkt->len = varint;
|
pkt->len = p + varint - pkt->data;
|
||||||
|
|
||||||
#ifdef NGX_QUIC_DEBUG_PACKETS
|
#ifdef NGX_QUIC_DEBUG_PACKETS
|
||||||
ngx_quic_hexdump(pkt->log, "quic DCID", pkt->dcid.data, pkt->dcid.len);
|
ngx_quic_hexdump(pkt->log, "quic DCID", pkt->dcid.data, pkt->dcid.len);
|
||||||
@ -600,7 +599,7 @@ ngx_quic_parse_handshake_header(ngx_quic_header_t *pkt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pkt->raw->pos = p;
|
pkt->raw->pos = p;
|
||||||
pkt->len = plen;
|
pkt->len = p + plen - pkt->data;
|
||||||
|
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user