Mercurial > hg > nginx
comparison 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 |
comparison
equal
deleted
inserted
replaced
8559:a89a58c642ef | 8560:d0d3fc0697a0 |
---|---|
317 } ngx_quic_header_t; | 317 } ngx_quic_header_t; |
318 | 318 |
319 | 319 |
320 u_char *ngx_quic_error_text(uint64_t error_code); | 320 u_char *ngx_quic_error_text(uint64_t error_code); |
321 | 321 |
322 ngx_int_t ngx_quic_parse_packet(ngx_quic_header_t *pkt); | |
323 | |
322 size_t ngx_quic_create_version_negotiation(ngx_quic_header_t *pkt, u_char *out); | 324 size_t ngx_quic_create_version_negotiation(ngx_quic_header_t *pkt, u_char *out); |
323 | 325 |
324 ngx_int_t ngx_quic_parse_long_header(ngx_quic_header_t *pkt); | |
325 size_t ngx_quic_create_long_header(ngx_quic_header_t *pkt, u_char *out, | 326 size_t ngx_quic_create_long_header(ngx_quic_header_t *pkt, u_char *out, |
326 size_t pkt_len, u_char **pnp); | 327 size_t pkt_len, u_char **pnp); |
327 | 328 |
328 ngx_int_t ngx_quic_parse_short_header(ngx_quic_header_t *pkt, | |
329 ngx_str_t *dcid); | |
330 size_t ngx_quic_create_short_header(ngx_quic_header_t *pkt, u_char *out, | 329 size_t ngx_quic_create_short_header(ngx_quic_header_t *pkt, u_char *out, |
331 size_t pkt_len, u_char **pnp); | 330 size_t pkt_len, u_char **pnp); |
332 | 331 |
333 size_t ngx_quic_create_retry_itag(ngx_quic_header_t *pkt, u_char *out, | 332 size_t ngx_quic_create_retry_itag(ngx_quic_header_t *pkt, u_char *out, |
334 u_char **start); | 333 u_char **start); |
335 | |
336 ngx_int_t ngx_quic_parse_initial_header(ngx_quic_header_t *pkt); | |
337 ngx_int_t ngx_quic_parse_handshake_header(ngx_quic_header_t *pkt); | |
338 | 334 |
339 ssize_t ngx_quic_parse_frame(ngx_quic_header_t *pkt, u_char *start, u_char *end, | 335 ssize_t ngx_quic_parse_frame(ngx_quic_header_t *pkt, u_char *start, u_char *end, |
340 ngx_quic_frame_t *frame); | 336 ngx_quic_frame_t *frame); |
341 ssize_t ngx_quic_create_frame(u_char *p, ngx_quic_frame_t *f); | 337 ssize_t ngx_quic_create_frame(u_char *p, ngx_quic_frame_t *f); |
342 | 338 |