aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
| * | | | | | | | | | | | | | | | HTTP/3: adjusted control stream parsing.Vladimir Homutov2021-04-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7.2.1: If a DATA frame is received on a control stream, the recipient MUST respond with a connection error of type H3_FRAME_UNEXPECTED; 7.2.2: If a HEADERS frame is received on a control stream, the recipient MUST respond with a connection error (Section 8) of type H3_FRAME_UNEXPECTED.
| * | | | | | | | | | | | | | | | QUIC: renamed stream variables from sn to qs.Roman Arutyunyan2021-04-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently both names are used which is confusing. Historically these were different objects, but now it's the same one. The name qs (quic stream) makes more sense than sn (stream node).
| * | | | | | | | | | | | | | | | QUIC: renamed stream field from c to connection.Roman Arutyunyan2021-04-19
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: fixed permitted packet types for PATH_RESPONSE.Sergey Kandaurov2021-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PATH_RESPONSE was explicitly forbidden in 0-RTT since at least draft-22, but the Frame Types table was not updated until recently while in IESG evaluation.
| * | | | | | | | | | | | | | | | QUIC: added missing checks for limits in stream frames parsing.Vladimir Homutov2021-04-19
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: fixed parsing of unknown frame types.Vladimir Homutov2021-04-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ngx_quic_frame_allowed() function only expects known frame types.
| * | | | | | | | | | | | | | | | QUIC: avoid sending extra frames in case of error.Vladimir Homutov2021-04-15
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: normalize header inclusion.Sergey Kandaurov2021-04-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Stop including QUIC headers with no user-serviceable parts inside. This allows to provide a much cleaner QUIC interface. To cope with that, ngx_quic_derive_key() is now explicitly exported for v3 and quic modules. Additionally, this completely hides the ngx_quic_keys_t internal type.
| * | | | | | | | | | | | | | | | QUIC: ngx_quic_frames_stream_t made opaque.Sergey Kandaurov2021-04-13
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: separate files for SSL library interfaces.Vladimir Homutov2021-04-14
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: separate files for tokens related processing.Vladimir Homutov2021-04-13
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: separate files for output and ack related processing.Vladimir Homutov2021-04-13
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: separate files for stream related processing.Vladimir Homutov2021-04-13
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: separate files for frames related processing.Vladimir Homutov2021-04-13
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | 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
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | | | | | | | | README: http3_max_field_size was removed in ae2e68f206f9.Sergey Kandaurov2021-03-07
| | | | | | | | | | | | | | | | | | | |