aboutsummaryrefslogtreecommitdiff
path: root/src/http/v3/ngx_http_v3_module.c
Commit message (Collapse)AuthorAge
* QUIC: "handshake_timeout" configuration parameter.Roman Arutyunyan2023-09-13
| | | | | | | | Previously QUIC did not have such parameter and handshake duration was controlled by HTTP/3. However that required creating and storing HTTP/3 session on first client datagram. Apparently there's no convenient way to store the session object until QUIC handshake is complete. In the followup patches session creation will be postponed to init() callback.
* HTTP/3: removed server push support.Roman Arutyunyan2023-05-12
|
* QUIC: removed "quic_mtu" directive.Roman Arutyunyan2023-05-11
| | | | | | | | | | | | | | The directive used to set the value of the "max_udp_payload_size" transport parameter. According to RFC 9000, Section 18.2, the value specifies the size of buffer for reading incoming datagrams: This limit does act as an additional constraint on datagram size in the same way as the path MTU, but it is a property of the endpoint and not the path; see Section 14. It is expected that this is the space an endpoint dedicates to holding incoming packets. Current QUIC implementation uses the maximum possible buffer size (65527) for reading datagrams.
* HTTP/3: "quic" parameter of "listen" directive.Roman Arutyunyan2023-02-27
| | | | | | | | | Now "listen" directve has a new "quic" parameter which enables QUIC protocol for the address. Further, to enable HTTP/3, a new directive "http3" is introduced. The hq-interop protocol is enabled by "http3_hq" as before. Now application protocol is chosen by ALPN. Previously used "http3" parameter of "listen" is deprecated.
* QUIC: application init() callback.Roman Arutyunyan2022-11-30
| | | | | | | | | | It's called after handshake completion or prior to the first early data stream creation. The callback should initialize application-level data before creating streams. HTTP/3 callback implementation sets keepalive timer and sends SETTINGS. Also, this allows to limit max handshake time in ngx_http_v3_init_stream().
* QUIC: idle mode for main connection.Roman Arutyunyan2022-10-19
| | | | | | | | | Now main QUIC connection for HTTP/3 always has c->idle flag set. This allows the connection to receive worker shutdown notification. It is passed to application level via a new conf->shutdown() callback. The HTTP/3 shutdown callback sends GOAWAY to client and gracefully shuts down the QUIC connection.
* QUIC: the "quic_active_connection_id_limit" directive.Vladimir Homutov2022-01-18
| | | | | The directive sets corresponding transport parameter and limits number of created client ids.
* QUIC: simplified configuration.Vladimir Homutov2021-12-06
| | | | | | | Directives that set transport parameters are removed from the configuration. Corresponding values are derived from the quic configuration or initialized to default. Whenever possible, quic configuration parameters are taken from higher-level protocol settings, i.e. HTTP/3.
* HTTP/3: $http3 variable.Roman Arutyunyan2021-12-01
| | | | | | | | | A new variable $http3 is added. The variable equals to "h3" for HTTP/3 connections, "hq" for hq connections and is an empty string otherwise. The variable $quic is eliminated. The new variable is similar to $http2 variable.
* HTTP/3: http3_hq directive and NGX_HTTP_V3_HQ macro.Roman Arutyunyan2021-12-04
| | | | Listen quic parameter is no longer supported.
* HTTP/3: merged ngx_http_quic_module into ngx_http_v3_module.Roman Arutyunyan2021-12-06
|
* HTTP/3: replaced macros with values.Roman Arutyunyan2021-08-04
|
* HTTP/3: http3_max_uni_streams directive.Roman Arutyunyan2021-07-29
| | | | The directive limits the number of uni streams client is allowed to create.
* HTTP/3: removed $http3 that served its purpose.Sergey Kandaurov2021-05-31
| | | | | | To specify final protocol version by hand: add_header Alt-Svc h3=":443";
* HTTP/3: removed http3_max_field_size.Roman Arutyunyan2021-02-16
| | | | Instead, size of one large_client_header_buffers buffer is used.
* HTTP/3: server pushes.Roman Arutyunyan2020-07-23
| | | | | | | New directives are added: - http3_max_concurrent_pushes - http3_push - http3_push_preload
* Style: moved function declarations to match usual code style.Roman Arutyunyan2020-07-23
| | | | Plus a few other minor style changes.
* HTTP/3: renamed server configuration variables from v3cf to h3scf.Roman Arutyunyan2020-07-23
| | | | Now they are similar to HTTP/2 where they are called h2scf.
* QUIC: added "quic" listen parameter.Roman Arutyunyan2020-07-21
| | | | | | The parameter allows processing HTTP/0.9-2 over QUIC. Also, introduced ngx_http_quic_module and moved QUIC settings there
* HTTP/3: refactored dynamic table implementation.Roman Arutyunyan2020-07-02
| | | | | | | | | | | | | | | Previously dynamic table was not functional because of zero limit on its size set by default. Now the following changes enable it: - new directives to set SETTINGS_QPACK_MAX_TABLE_CAPACITY and SETTINGS_QPACK_BLOCKED_STREAMS - send settings with SETTINGS_QPACK_MAX_TABLE_CAPACITY and SETTINGS_QPACK_BLOCKED_STREAMS to the client - send Insert Count Increment to the client - send Header Acknowledgement to the client - evict old dynamic table entries on overflow - decode Required Insert Count from client - block stream if Required Insert Count is not reached
* HTTP/3: http3_max_field_size directive to limit string size.Roman Arutyunyan2020-06-29
| | | | | | | Client streams may send literal strings which are now limited in size by the new directive. The default value is 4096. The directive is similar to HTTP/2 directive http2_max_field_size.
* QUIC draft-28 transport parameters support.Sergey Kandaurov2020-05-29
| | | | | Draft-27 and draft-28 support can now be enabled interchangeably, it's based on the compile-time macro NGX_QUIC_DRAFT_VERSION.
* Renamed max_packet_size to max_udp_payload_size, from draft-28.Sergey Kandaurov2020-05-29
| | | | No functional changes.
* Address validation using Retry packets.Sergey Kandaurov2020-05-14
| | | | | The behaviour is toggled with the new directive "quic_retry on|off". QUIC token construction is made suitable for issuing with NEW_TOKEN.
* HTTP/3: directives with limited values converted to post handler.Sergey Kandaurov2020-04-22
| | | | The purpose is to show a precise line number with an invalid value.
* HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.Sergey Kandaurov2020-04-22
| | | | This allows to specify directive values with measurement units.
* Added handling of incorrect values in TP configuration.Vladimir Homutov2020-04-16
| | | | Some parameters have minimal/maximum values defined by standard.
* Added primitive flow control mechanisms.Vladimir Homutov2020-04-15
| | | | | | | | | | | | | | | | | | | | | | | | | + MAX_STREAM_DATA frame is sent when recv() is performed on stream The new value is a sum of total bytes received by stream + free space in a buffer; The sending of MAX_STREM_DATA frame in response to STREAM_DATA_BLOCKED frame is adjusted to follow the same logic as above. + MAX_DATA frame is sent when total amount of received data is 2x of current limit. The limit is doubled. + Default values of transport parameters are adjusted to more meaningful values: initial stream limits are set to quic buffer size instead of unrealistically small 255. initial max data is decreased to 16 buffer sizes, in an assumption that this is enough for a relatively short connection, instead of randomly chosen big number. All this allows to initiate a stable flow of streams that does not block on stream/connection limits (tested with FF 77.0a1 and 100K requests)
* HTTP/3: http3 variable.Sergey Kandaurov2020-03-28
|
* Respect QUIC max_idle_timeout.Roman Arutyunyan2020-03-23
|
* Limit output QUIC packets with client max_packet_size.Roman Arutyunyan2020-03-23
| | | | Additionally, receive larger packets than 512 bytes.
* Adedd the http "quic" variable.Vladimir Homutov2020-03-20
| | | | | The value is literal "quic" for requests passed over HTTP/3, and empty string otherwise.
* Configurable transport parameters.Vladimir Homutov2020-03-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - integer parameters can be configured using the following directives: quic_max_idle_timeout quic_max_ack_delay quic_max_packet_size quic_initial_max_data quic_initial_max_stream_data_bidi_local quic_initial_max_stream_data_bidi_remote quic_initial_max_stream_data_uni quic_initial_max_streams_bidi quic_initial_max_streams_uni quic_ack_delay_exponent quic_active_migration quic_active_connection_id_limit - only following parameters are actually sent: active_connection_id_limit initial_max_streams_uni initial_max_streams_bidi initial_max_stream_data_bidi_local initial_max_stream_data_bidi_remote initial_max_stream_data_uni (other parameters are to be added into ngx_quic_create_transport_params() function as needed, should be easy now) - draft 24 and draft 27 are now supported (at compile-time using quic_version macro)
* HTTP/3.Roman Arutyunyan2020-03-13