lp:~titusx/nginx/mainline
- Get this branch:
- bzr branch lp:~titusx/nginx/mainline
Branch merges
Import details
This branch is an import of the HEAD branch of the Git repository at https://github.com/nginx/nginx.git.
Last successful import was .
Recent revisions
- 7214. By Vladimir Khomutov <email address hidden>
-
QUIC: handle callback errors in compat.
The error may be triggered in add_handhshake_
data() by incorrect transport
parameter sent by client. The expected behaviour in this case is to close
connection complaining about incorrect parameter. Currently the connection
just times out. - 7213. By Roman Arutyunyan <email address hidden>
-
Modules compatibility: added QUIC to signature (ticket #2539).
Enabling QUIC changes ngx_connection_t layout, which is why it should be
added to the signature. - 7212. By Roman Arutyunyan <email address hidden>
-
QUIC: simplified setting close timer when closing connection.
Previously, the timer was never reset due to an explicit check. The check was
added in 36b59521a41c as part of connection close simplification. The reason
was to retain the earliest timeout. However, the timeouts are all the same
while QUIC handshake is in progress and resetting the timer for the same value
has no performance implications. After handshake completion there's only
application level. The change removes the check. - 7211. By Roman Arutyunyan <email address hidden>
-
HTTP/3: postponed session creation to init() callback.
Now the session object is assigned to c->data while ngx_http_
connection_ t
object is referenced by its http_connection field, similar to
ngx_http_v2_connection_ t and ngx_http_request_t. The change allows to eliminate v3_session field from ngx_http_
connection_ t.
The field was under NGX_HTTP_V3 macro, which was a source of binary
compatibility problems when nginx/module is build with/without HTTP/3 support.Postponing is essential since c->data should retain the reference to
ngx_http_connection_ t object throughout QUIC handshake, because SSL callbacks
ngx_http_ssl_servername( ) and ngx_http_ ssl_alpn_ select( ) rely on this. - 7210. By Roman Arutyunyan <email address hidden>
-
QUIC: do not call shutdown() when handshake is in progress.
Instead, when worker is shutting down and handshake is not yet completed,
connection is terminated immediately.Previously the callback could be called while QUIC handshake was in progress
and, what's more important, before the init() callback. Now it's postponed
after init().This change is a preparation to postponing HTTP/3 session creation to init().
- 7208. By Roman Arutyunyan <email address hidden>
-
QUIC: "handshake_timeout" configuration parameter.
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. - 7207. By Sergey Kandaurov <email address hidden>
-
QUIC: removed use of SSL_quic_read_level and SSL_quic_
write_level. As explained in BoringSSL change[1], levels were introduced in the original
QUIC API to draw a line between when keys are released and when are active.
In the new QUIC API they are released in separate calls when it's needed.
BoringSSL has then a consideration to remove levels API, hence the change.If not available e.g. from a QUIC packet header, levels can be taken based on
keys availability. The only real use of levels is to prevent using app keys
before they are active in QuicTLS that provides the old BoringSSL QUIC API,
it is replaced with an equivalent check of c->ssl->handshaked.This change also removes OpenSSL compat shims since they are no longer used.
The only exception left is caching write level from the keylog callback in
the internal field which is a handy equivalent of checking keys availability. - 7206. By Sergey Kandaurov <email address hidden>
-
QUIC: refined sending CONNECTION_CLOSE in various packet types.
As per RFC 9000, section 10.2.3, to ensure that peer successfully removed
packet protection, CONNECTION_CLOSE can be sent in multiple packets using
different packet protection levels.Now it is sent in all protection levels available.
This roughly corresponds to the following paragraph:* Prior to confirming the handshake, a peer might be unable to process 1-RTT
packets, so an endpoint SHOULD send a CONNECTION_CLOSE frame in both Handshake
and 1-RTT packets. A server SHOULD also send a CONNECTION_CLOSE frame in an
Initial packet.In practice, this change allows to avoid sending an Initial packet when we know
the client has handshake keys, by checking if we have discarded initial keys.
Also, this fixes sending CONNECTION_CLOSE when using QuicTLS with old QUIC API,
where TLS stack releases application read keys before handshake confirmation;
it is fixed by sending CONNECTION_CLOSE additionally in a Handshake packet. - 7205. By Maxim Dounin <email address hidden>
-
Upstream: fixed handling of Status headers without reason-phrase.
Status header with an empty reason-phrase, such as "Status: 404 ", is
valid per CGI specification, but looses the trailing space during parsing.
Currently, this results in "HTTP/1.1 404" HTTP status line in the response,
which violates HTTP specification due to missing trailing space.With this change, only the status code is used from such short Status
header lines, so nginx will generate status line itself, with the space
and appropriate reason phrase if available.Reported at:
https://mailman. nginx.org/ pipermail/ nginx/2023- August/ EX7G4JUUHJWJE5U OAZMO5UD6OJILCY GX.html
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)