aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
| * | | | | | | | | | | | | | | | QUIC: simplified sending 1-RTT only frames.Sergey Kandaurov2021-05-05
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: relaxed client id requirements.Vladimir Homutov2021-05-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Client IDs cannot be reused on different paths. This change allows to reuse client id previosly seen on the same path (but with different dcid) in case when no unused client IDs are available.
| * | | | | | | | | | | | | | | | QUIC: consider NEW_CONNECTION_ID a probing frame.Vladimir Homutov2021-05-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to quic-transport, 9.1: PATH_CHALLENGE, PATH_RESPONSE, NEW_CONNECTION_ID, and PADDING frames are "probing frames", and all other frames are "non-probing frames".
| * | | | | | | | | | | | | | | | HTTP/3: clean up table from session cleanup handler.Roman Arutyunyan2021-04-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously table had a separate cleanup handler.
| * | | | | | | | | | | | | | | | HTTP/3: moved session initialization to a separate file.Roman Arutyunyan2021-05-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously it was in ngx_http_v3_streams.c, but it's unrelated to streams.
| * | | | | | | | | | | | | | | | HTTP/3: separate header files for existing source files.Roman Arutyunyan2021-05-05
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | HTTP/3: moved parsing uni stream type to ngx_http_v3_parse.c.Roman Arutyunyan2021-05-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously it was parsed in ngx_http_v3_streams.c, while the streams were parsed in ngx_http_v3_parse.c. Now all parsing is done in one file. This simplifies parsing API and cleans up ngx_http_v3_streams.c.
| * | | | | | | | | | | | | | | | HTTP/3: renamed ngx_http_v3_client_XXX() functions.Roman Arutyunyan2021-04-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The functions are renamed to ngx_http_v3_send_XXX() similar to ngx_http_v3_send_settings() and ngx_http_v3_send_goaway().
| * | | | | | | | | | | | | | | | HTTP/3: renamed ngx_http_v3_connection_t to ngx_http_v3_session_t.Roman Arutyunyan2021-05-05
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | HTTP/3: reference h3c directly from ngx_http_connection_t.Roman Arutyunyan2021-05-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, an ngx_http_v3_connection_t object was created for HTTP/3 and then assinged to c->data instead of the generic ngx_http_connection_t object. Now a direct reference is added to ngx_http_connection_t, which is less confusing and does not require a flag for http3.
| * | | | | | | | | | | | | | | | HTTP/3: ngx_http_v3_get_session() macro.Roman Arutyunyan2021-04-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's used instead of accessing c->quic->parent->data directly. Apart from being simpler, it allows to change the way session is stored in the future by changing the macro.
| * | | | | | | | | | | | | | | | HTTP/3: moved Stream Cancellation stub to ngx_http_v3_streams.c.Roman Arutyunyan2021-05-05
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | HTTP/3: fixed decoder stream stubs.Roman Arutyunyan2021-05-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now ngx_http_v3_ack_header() and ngx_http_v3_inc_insert_count() always generate decoder error. Our implementation does not use dynamic tables and does not expect client to send Section Acknowledgement or Insert Count Increment. Stream Cancellation, on the other hand, is allowed to be sent anyway. This is why ngx_http_v3_cancel_stream() does not return an error.
| * | | | | | | | | | | | | | | | HTTP/3: reject empty DATA and HEADERS frames on control stream.Roman Arutyunyan2021-05-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously only non-empty frames were rejected.
| * | | | | | | | | | | | | | | | QUIC: fixed build with NGX_QUIC_DEBUG_ALLOC enabled.Vladimir Homutov2021-04-28
| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | QUIC: connection migration.Vladimir Homutov2021-04-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The patch adds proper transitions between multiple networking addresses that can be used by a single quic connection. New networking paths are validated using PATH_CHALLENGE/PATH_RESPONSE frames.
| * | | | | | | | | | | | | | | | 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