aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
| * | | | | | | | | | | | | | | | QUIC: separate files for connection id related processing.Vladimir Homutov2021-04-13
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: headers cleanup.Vladimir Homutov2021-04-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "ngx_event_quic.h" header file now contains only public definitions, used by modules. All internal definitions are moved into the "ngx_event_quic_connection.h" header file.
| * | | | | | | | | | | | | | | | QUIC: separate function for connection ids initialization.Vladimir Homutov2021-04-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function correctly cleans up resources in case of failure to create initial server id: it removes previously created udp node for odcid from listening rbtree.
| * | | | | | | | | | | | | | | | QUIC: fixed ngx_quic_send_ack_range() function.Vladimir Homutov2021-04-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Created frame was not added to the output queue.
| * | | | | | | | | | | | | | | | QUIC: fixed debug message macro.Vladimir Homutov2021-04-05
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: added error codes and messages from latest drafts.Vladimir Homutov2021-04-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The AEAD_LIMIT_REACHED was addeded in draft-31. The NO_VIABLE_PATH was added in draft-33.
| * | | | | | | | | | | | | | | | HTTP/3: keepalive_time support.Sergey Kandaurov2021-04-16
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | Merged with the default branch.Sergey Kandaurov2021-04-16
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | | | | | | HTTP/3: removed h3scf->quic leftover after 0d2b2664b41c.Sergey Kandaurov2021-04-12
| | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | QUIC: fixed memory leak in ngx_hkdf_extract()/ngx_hkdf_expand().Sergey Kandaurov2021-04-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes leak on successful path when built with OpenSSL.
| * | | | | | | | | | | | | | | | | QUIC: PATH_CHALLENGE frame creation.Vladimir Homutov2021-03-23
| | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | QUIC: distinct files for connection migration.Vladimir Homutov2021-03-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The connection migration-related code from quic.c with dependencies is moved into separate file.
| * | | | | | | | | | | | | | | | | QUIC: separate header for ngx_quic_connection_t.Vladimir Homutov2021-03-31
| | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | QUIC: simplified quic connection dispatching.Vladimir Homutov2021-04-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently listener contains rbtree with multiple nodes for single QUIC connection: each corresponding to specific server id. Each udp node points to same ngx_connection_t, which points to QUIC connection via c->udp field. Thus when an event handler is called, it only gets ngx_connection_t with c->udp pointing to QUIC connection. This makes it hard to obtain actual node which was used to dispatch packet (it requires to repeat DCID lookup). Additionally, ngx_quic_connection_t->udp field is only needed to keep a pointer in c->udp. The node is not added into the tree and does not carry useful information.
| * | | | | | | | | | | | | | | | | UDP: extended datagram context.Vladimir Homutov2021-04-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes it is required to process datagram properties at higher level (i.e. QUIC is interested in source address which may change and IP options). The patch adds ngx_udp_dgram_t structure used to pass packet-related information in c->udp.
| * | | | | | | | | | | | | | | | | QUIC: fixed udp buffer initialization.Vladimir Homutov2021-03-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The start field is used to check if the QUIC packet is first in the datagram. This fixes stateless reset detection.
| * | | | | | | | | | | | | | | | | QUIC: do not handle empty dcid.Roman Arutyunyan2021-03-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a QUIC datagram arrives, its DCID is never empty. Previously, the case of empty DCID was handled. Now this code is simplified.
| * | | | | | | | | | | | | | | | | QUIC: do not reallocate c->sockaddr.Roman Arutyunyan2021-03-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a connection is created, enough memory is allocated to accomodate any future address change.
| * | | | | | | | | | | | | | | | | QUIC: do not copy input data.Roman Arutyunyan2021-03-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, when a new datagram arrived, data were copied from the UDP layer to the QUIC layer via c->recv() interface. Now UDP buffer is accessed directly.
| * | | | | | | | | | | | | | | | | QUIC: HKDF API compatibility with OpenSSL master branch.Sergey Kandaurov2021-03-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OpenSSL 3.0 started to require HKDF-Extract output PRK length pointer used to represent the amount of data written to contain the length of the key buffer before the call. EVP_PKEY_derive() documents this. See HKDF_Extract() internal implementation update in this change: https://github.com/openssl/openssl/commit/5a285ad
| * | | | | | | | | | | | | | | | | Merged with the default branch.Sergey Kandaurov2021-03-30
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | | | | | | | HTTP/3: fixed $connection_requests.Roman Arutyunyan2021-03-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the value was always "1".
| * | | | | | | | | | | | | | | | | | HTTP/3: set initial_max_streams_uni default value to 3.Roman Arutyunyan2021-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The maximum number of HTTP/3 unidirectional client streams we can handle is 3: control, decode and encode. These streams are never closed.
| * | | | | | | | | | | | | | | | | | HTTP/3: keepalive timeout.Roman Arutyunyan2021-03-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This timeout limits the time when no client request streams exist.
| * | | | | | | | | | | | | | | | | | QUIC: connection shutdown.Roman Arutyunyan2021-03-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function ngx_quic_shutdown_connection() waits until all non-cancelable streams are closed, and then closes the connection. In HTTP/3 cancelable streams are all unidirectional streams except push streams. The function is called from HTTP/3 when client reaches keepalive_requests.
| * | | | | | | | | | | | | | | | | | HTTP/3: send GOAWAY when last request is accepted.Roman Arutyunyan2021-03-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The last request in connection is determined according to the keepalive_requests directive. Requests beyond keepalive_requests are rejected.
| * | | | | | | | | | | | | | | | | | Core: fixed build with BPF on non-64bit platforms (ticket #2152).Vladimir Homutov2021-03-23
| | | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | | QUIC: bpf code regenerated.Vladimir Homutov2021-03-16
| | | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | | QUIC: fixed key extraction in bpf.Vladimir Homutov2021-03-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case of long header packets, dcid length was not read correctly. While there, macros to parse uint64 was fixed as well as format specifiers to print it in debug mode. Thanks to Gao Yan <gaoyan09@baidu.com>.
| * | | | | | | | | | | | | | | | | | HTTP/3: do not push until a MAX_PUSH_ID frame is received.Sergey Kandaurov2021-03-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes interop with quic-go that doesn't send MAX_PUSH_ID.
| * | | | | | | | | | | | | | | | | | QUIC: fixed hq ALPN id for the final draft.Sergey Kandaurov2021-03-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was an agreement to use "hq-interop"[1] for interoperability testing. [1] https://github.com/quicwg/base-drafts/wiki/ALPN-IDs-used-with-QUIC
| * | | | | | | | | | | | | | | | | | QUIC: fixed expected TLS codepoint with final draft and BoringSSL.Sergey Kandaurov2021-03-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A reasonable codepoint is always set[1] explicitly so that it doesn't depend on the default library value that may change[2] in the future. [1] https://boringssl.googlesource.com/boringssl/+/3d8b8c3d [2] https://boringssl.googlesource.com/boringssl/+/c47bfce0
| * | | | | | | | | | | | | | | | | | QUIC: added error handling to ngx_hkdf_extract()/ngx_hkdf_expand().Vladimir Homutov2021-03-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The OpenSSL variant of functions lacked proper error processing.
| * | | | | | | | | | | | | | | | | | HTTP/3: fixed server push.Sergey Kandaurov2021-03-10
| | | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | | Merged with the default branch.Sergey Kandaurov2021-03-10
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | | | | | | | | Updated the list of supported drafts.Sergey Kandaurov2021-02-19
| | | | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | | | QUIC: multiple versions support.Sergey Kandaurov2021-02-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Draft-29 and beyond are now supported simultaneously, no need to recompile.
| * | | | | | | | | | | | | | | | | | | QUIC: removed support prior to draft-29.Sergey Kandaurov2021-02-18
| | | | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | | | QUIC: set idle timer when sending an ack-eliciting packet.Roman Arutyunyan2021-02-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As per quic-transport-34: An endpoint also restarts its idle timer when sending an ack-eliciting packet if no other ack-eliciting packets have been sent since last receiving and processing a packet. Previously, the timer was set for any packet.
| * | | | | | | | | | | | | | | | | | | HTTP/3: limited client header size.Roman Arutyunyan2021-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The limit is the size of all large client header buffers. Client header size is the total size of all client header names and values.
| * | | | | | | | | | | | | | | | | | | HTTP/3: introduced ngx_http_v3_parse_t structure.Roman Arutyunyan2021-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The structure is used to parse an HTTP/3 request. An object of this type is added to ngx_http_request_t instead of h3_parse generic pointer. Also, the new field is located outside of the request ephemeral zone to keep it safe after request headers are parsed.
| * | | | | | | | | | | | | | | | | | | HTTP/3: removed http3_max_field_size.Roman Arutyunyan2021-02-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead, size of one large_client_header_buffers buffer is used.
| * | | | | | | | | | | | | | | | | | | Merged with the default branch.Sergey Kandaurov2021-02-17
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | | | | | | | | | QUIC: added ability to reset a stream.Sergey Kandaurov2021-02-17
| | | | | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | | | | QUIC: fixed indentation.Sergey Kandaurov2021-02-15
| | | | | | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | | | | QUIC: added check of client transport parameters.Vladimir Homutov2021-02-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Parameters sent by client are verified and defaults are set for parameters omitted by client.
| * | | | | | | | | | | | | | | | | | | | QUIC: updated list of transport parameters to be sent.Vladimir Homutov2021-02-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "max_ack_delay", "ack_delay_exponent", and "max_udp_payload_size" transport parameters were not communicated to client. The "disable_active_migration" and "active_connection_id_limit" parameters were not saved into zero-rtt context.
| * | | | | | | | | | | | | | | | | | | | QUIC: distinguish reserved transport parameters in logging.Vladimir Homutov2021-02-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 18.1. Reserved Transport Parameters Transport parameters with an identifier of the form "31 * N + 27" for integer values of N are reserved to exercise the requirement that unknown transport parameters be ignored. These transport parameters have no semantics, and can carry arbitrary values.
| * | | | | | | | | | | | | | | | | | | | QUIC: send PING frames on PTO expiration.Roman Arutyunyan2021-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two PING frames are sent per level that generate two UDP datagrams.
| * | | | | | | | | | | | | | | | | | | | QUIC: improved setting the lost timer.Roman Arutyunyan2021-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Setting the timer is brought into compliance with quic-recovery-34. Now it's set from a single function ngx_quic_set_lost_timer() that takes into account both loss detection and PTO. The following issues are fixed with this change: - when in loss detection mode, discarding a context could turn off the timer forever after switching to the PTO mode - when in loss detection mode, sending a packet resulted in rescheduling the timer as if it's always in the PTO mode