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