mirror of
https://github.com/nginx/nginx.git
synced 2024-12-05 06:19:01 +08:00
QUIC: simplified packet header parsing.
Now flags are processed in ngx_quic_input(), and raw->pos points to the first byte after the flags. Redundant checks from ngx_quic_parse_short_header() and ngx_quic_parse_long_header() are removed.
This commit is contained in:
parent
80958b29a2
commit
fe626bda84
@ -1623,6 +1623,7 @@ ngx_quic_input(ngx_connection_t *c, ngx_buf_t *b)
|
|||||||
pkt.len = b->last - p;
|
pkt.len = b->last - p;
|
||||||
pkt.log = c->log;
|
pkt.log = c->log;
|
||||||
pkt.flags = p[0];
|
pkt.flags = p[0];
|
||||||
|
pkt.raw->pos++;
|
||||||
|
|
||||||
if (c->quic->in_retry) {
|
if (c->quic->in_retry) {
|
||||||
rc = ngx_quic_retry_input(c, &pkt);
|
rc = ngx_quic_retry_input(c, &pkt);
|
||||||
|
@ -250,21 +250,9 @@ ngx_quic_parse_long_header(ngx_quic_header_t *pkt)
|
|||||||
u_char *p, *end;
|
u_char *p, *end;
|
||||||
uint8_t idlen;
|
uint8_t idlen;
|
||||||
|
|
||||||
p = pkt->data;
|
p = pkt->raw->pos;
|
||||||
end = pkt->data + pkt->len;
|
end = pkt->data + pkt->len;
|
||||||
|
|
||||||
p = ngx_quic_read_uint8(p, end, &pkt->flags);
|
|
||||||
if (p == NULL) {
|
|
||||||
ngx_log_error(NGX_LOG_INFO, pkt->log, 0,
|
|
||||||
"quic packet is too small to read flags");
|
|
||||||
return NGX_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ngx_quic_long_pkt(pkt->flags)) {
|
|
||||||
ngx_log_error(NGX_LOG_INFO, pkt->log, 0, "quic not a long packet");
|
|
||||||
return NGX_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
p = ngx_quic_read_uint32(p, end, &pkt->version);
|
p = ngx_quic_read_uint32(p, end, &pkt->version);
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
ngx_log_error(NGX_LOG_INFO, pkt->log, 0,
|
ngx_log_error(NGX_LOG_INFO, pkt->log, 0,
|
||||||
@ -473,21 +461,9 @@ ngx_quic_parse_short_header(ngx_quic_header_t *pkt, ngx_str_t *dcid)
|
|||||||
{
|
{
|
||||||
u_char *p, *end;
|
u_char *p, *end;
|
||||||
|
|
||||||
p = pkt->data;
|
p = pkt->raw->pos;
|
||||||
end = pkt->data + pkt->len;
|
end = pkt->data + pkt->len;
|
||||||
|
|
||||||
p = ngx_quic_read_uint8(p, end, &pkt->flags);
|
|
||||||
if (p == NULL) {
|
|
||||||
ngx_log_error(NGX_LOG_INFO, pkt->log, 0,
|
|
||||||
"quic packet is too small to read flags");
|
|
||||||
return NGX_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ngx_quic_short_pkt(pkt->flags)) {
|
|
||||||
ngx_log_error(NGX_LOG_INFO, pkt->log, 0, "quic not a short packet");
|
|
||||||
return NGX_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, pkt->log, 0,
|
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, pkt->log, 0,
|
||||||
"quic short packet flags:%xd", pkt->flags);
|
"quic short packet flags:%xd", pkt->flags);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user