Mercurial > hg > nginx
diff src/event/ngx_event_quic_transport.h @ 8560:d0d3fc0697a0 quic
QUIC: packet processing refactoring.
All packet header parsing is now performed by ngx_quic_parse_packet()
function, located in the ngx_quic_transport.c file.
The packet processing is centralized in the ngx_quic_process_packet()
function which decides if the packet should be accepted, ignored or
connection should be closed, depending on the connection state.
As a result of refactoring, behavior has changed in some places:
- minimal size of Initial packet is now always tested
- connection IDs are always tested in existing connections
- old keys are discarded on encryption level switch
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Wed, 30 Sep 2020 15:14:09 +0300 |
parents | 3afaaaa930ab |
children | b31c02454539 |
line wrap: on
line diff
--- a/src/event/ngx_event_quic_transport.h +++ b/src/event/ngx_event_quic_transport.h @@ -319,23 +319,19 @@ typedef struct { u_char *ngx_quic_error_text(uint64_t error_code); +ngx_int_t ngx_quic_parse_packet(ngx_quic_header_t *pkt); + size_t ngx_quic_create_version_negotiation(ngx_quic_header_t *pkt, u_char *out); -ngx_int_t ngx_quic_parse_long_header(ngx_quic_header_t *pkt); size_t ngx_quic_create_long_header(ngx_quic_header_t *pkt, u_char *out, size_t pkt_len, u_char **pnp); -ngx_int_t ngx_quic_parse_short_header(ngx_quic_header_t *pkt, - ngx_str_t *dcid); size_t ngx_quic_create_short_header(ngx_quic_header_t *pkt, u_char *out, size_t pkt_len, u_char **pnp); size_t ngx_quic_create_retry_itag(ngx_quic_header_t *pkt, u_char *out, u_char **start); -ngx_int_t ngx_quic_parse_initial_header(ngx_quic_header_t *pkt); -ngx_int_t ngx_quic_parse_handshake_header(ngx_quic_header_t *pkt); - ssize_t ngx_quic_parse_frame(ngx_quic_header_t *pkt, u_char *start, u_char *end, ngx_quic_frame_t *frame); ssize_t ngx_quic_create_frame(u_char *p, ngx_quic_frame_t *f);