summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)AuthorFilesLines
2021-03-16QUIC: fixed expected TLS codepoint with final draft and BoringSSL.Sergey Kandaurov1-0/+4
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
2021-03-11QUIC: added error handling to ngx_hkdf_extract()/ngx_hkdf_expand().Vladimir Homutov1-16/+42
The OpenSSL variant of functions lacked proper error processing.
2021-03-11Removed "ch" argument from ngx_pass_open_channel().Ruslan Ermilov1-39/+18
2021-03-11Mail: fixed build without SSL.Maxim Dounin2-5/+7
Broken by d84f13618277 and 12ea1de7d87c (1.19.8). Reported by Sergey Osokin.
2021-03-11Version bump.Maxim Dounin1-2/+2
2021-03-10HTTP/3: fixed server push.Sergey Kandaurov1-0/+1
2021-03-10Merged with the default branch.Sergey Kandaurov30-142/+1075
2021-03-09release-1.19.8 tagMaxim Dounin1-0/+1
2021-03-09nginx-1.19.8-RELEASErelease-1.19.8Maxim Dounin1-0/+62
2021-03-09Updated OpenSSL used for win32 builds.Maxim Dounin1-1/+1
2021-03-07README: http3_max_field_size was removed in ae2e68f206f9.Sergey Kandaurov1-1/+0
2021-03-07README: bump browsers' version after 81bb3a690c10 (old drafts rip).Sergey Kandaurov1-1/+1
2021-03-05Mail: sending of the PROXY protocol to backends.Maxim Dounin2-7/+133
Activated with the "proxy_protocol" directive. Can be combined with "listen ... proxy_protocol;" and "set_real_ip_from ...;" to pass client address provided to nginx in the PROXY protocol header.
2021-03-05Mail: realip module.Maxim Dounin4-0/+281
When configured with the "set_real_ip_from", it can set client's IP address as visible in logs to the one obtained via the PROXY protocol.
2021-03-05Mail: parsing of the PROXY protocol from clients.Maxim Dounin5-4/+132
Activated with the "proxy_protocol" parameter of the "listen" directive. Obtained information is passed to the auth_http script in Proxy-Protocol-Addr, Proxy-Protocol-Port, Proxy-Protocol-Server-Addr, and Proxy-Protocol-Server-Port headers.
2021-03-05Mail: made auth http creating request easier to extend.Maxim Dounin1-13/+29
2021-03-05Mail: fixed log action after SSL handshake.Maxim Dounin1-0/+2
2021-03-05Mail: postponed session initialization under accept mutex.Maxim Dounin2-1/+29
Similarly to 40e8ce405859 in the stream module, this reduces the time accept mutex is held. This also simplifies following changes to introduce PROXY protocol support.
2021-03-05Mail: added missing event handling after reading data.Maxim Dounin5-8/+75
If we need to be notified about further events, ngx_handle_read_event() needs to be called after a read event is processed. Without this, an event can be removed from the kernel and won't be reported again, notably when using oneshot event methods, such as eventport on Solaris. For consistency, existing ngx_handle_read_event() call removed from ngx_mail_read_command(), as this call only covers one of the code paths where ngx_mail_read_command() returns NGX_AGAIN. Instead, appropriate processing added to the callers, covering all code paths where NGX_AGAIN is returned.
2021-03-05Mail: added missing event handling after blocking events.Maxim Dounin3-0/+18
As long as a read event is blocked (ignored), ngx_handle_read_event() needs to be called to make sure no further notifications will be triggered when using level-triggered event methods, such as select() or poll().
2021-03-05Events: fixed eventport handling in ngx_handle_read_event().Maxim Dounin1-1/+1
The "!rev->ready" test seems to be a typo, introduced in the original commit (719:f30b1a75fd3b). The ngx_handle_write_event() code properly tests for "rev->ready" instead. Due to this typo, read events might be unexpectedly removed during proxying after an event on the other part of the proxied connection. Catched by mail proxying tests.
2021-03-05SSL: fixed build by Sun C with old OpenSSL versions.Maxim Dounin7-14/+14
Sun C complains about "statement not reached" if a "return" is followed by additional statements.
2021-03-02Proxy: variables support in "proxy_cookie_flags" flags.Ruslan Ermilov1-26/+63
2021-03-01Introduced strerrordesc_np() support.Maxim Dounin2-7/+67
The strerrordesc_np() function, introduced in glibc 2.32, provides an async-signal-safe way to obtain error messages. This makes it possible to avoid copying error messages.
2021-03-01Improved maximum errno detection.Maxim Dounin2-34/+85
Previously, systems without sys_nerr (or _sys_nerr) were handled with an assumption that errors start at 0 and continuous. This is, however, not something POSIX requires, and not true on some platforms. Notably, on Linux, where sys_nerr is no longer available for newly linked binaries starting with glibc 2.32, there are gaps in error list, which used to stop us from properly detecting maximum errno. Further, on GNU/Hurd errors start at 0x40000001. With this change, maximum errno detection is moved to the runtime code, now able to ignore gaps, and also detects the first error if needed. This fixes observed "Unknown error" messages as seen on Linux with glibc 2.32 and on GNU/Hurd.
2021-03-01HTTP/2: client_header_timeout before first request (ticket #2142).Maxim Dounin1-2/+5
With this change, behaviour of HTTP/2 becomes even closer to HTTP/1.x, and client_header_timeout instead of keepalive_timeout is used before the first request is received. This fixes HTTP/2 connections being closed even before the first request if "keepalive_timeout 0;" was used in the configuration; the problem appeared in f790816a0e87 (1.19.7).
2021-02-25Contrib: vim syntax, default highlighting (ticket #2141).Maxim Dounin1-21/+21
Using default highlighting makes it possible to easily overrule highlighting specified in the syntax file, see ":highlight-default" in vim help for details.
2021-02-20SSL: added check for debugging.Maxim Dounin1-0/+8
If debugging is not enabled, there is no need to do extra work in ngx_ssl_verify_callback() and ngx_ssl_handshake_log().
2021-02-20SSL: added missed error reporting during variables evaluation.Maxim Dounin1-4/+13
2021-02-20SSL: X509_NAME_oneline() error handling.Maxim Dounin1-5/+37
2021-02-20Configure: marked top-level make targets as phony.Ruslan Ermilov2-0/+4
Reported by Thibault Nélis.
2021-02-20Version bump.Ruslan Ermilov1-2/+2
2021-02-19Updated the list of supported drafts.Sergey Kandaurov2-5/+1
2021-02-19QUIC: multiple versions support.Sergey Kandaurov4-20/+14
Draft-29 and beyond are now supported simultaneously, no need to recompile.
2021-02-18QUIC: removed support prior to draft-29.Sergey Kandaurov3-36/+4
2021-02-18QUIC: set idle timer when sending an ack-eliciting packet.Roman Arutyunyan1-5/+9
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.
2021-02-17HTTP/3: limited client header size.Roman Arutyunyan2-0/+16
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.
2021-02-17HTTP/3: introduced ngx_http_v3_parse_t structure.Roman Arutyunyan4-23/+16
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.
2021-02-16release-1.19.7 tagMaxim Dounin1-0/+1
2021-02-16nginx-1.19.7-RELEASErelease-1.19.7Maxim Dounin1-0/+86
2021-02-16HTTP/3: removed http3_max_field_size.Roman Arutyunyan3-19/+5
Instead, size of one large_client_header_buffers buffer is used.
2021-02-17Merged with the default branch.Sergey Kandaurov17-188/+305
2021-02-17QUIC: added ability to reset a stream.Sergey Kandaurov3-0/+71
2021-02-15QUIC: fixed indentation.Sergey Kandaurov5-29/+28
2021-02-15QUIC: added check of client transport parameters.Vladimir Homutov1-36/+86
Parameters sent by client are verified and defaults are set for parameters omitted by client.
2021-02-11HTTP/2: removed http2_max_field_size and http2_max_header_size.Maxim Dounin3-29/+32
Instead, size of one large_client_header_buffers buffer and all large client header buffers are used.
2021-02-11HTTP/2: keepalive_timeout now armed once between requests.Maxim Dounin1-24/+15
Previously, PINGs and other frames extended possible keepalive time, making it possible to keep an open HTTP/2 connection for a long time. Now the connection is always closed as long as keepalive_timeout expires, similarly to how it happens in HTTP/1.x. Note that as a part of this change, incomplete frames are no longer trigger a separate timeout, so http2_recv_timeout (replaced by client_header_timeout in previous patches) is essentially cancelled. The client_header_timeout is, however, used for SSL handshake and while reading HEADERS frames.
2021-02-11HTTP/2: removed http2_idle_timeout and http2_max_requests.Maxim Dounin3-31/+39
Instead, keepalive_timeout and keepalive_requests are now used. This is expected to simplify HTTP/2 code and usage. This also matches directives used by upstream module for all protocols. In case of default settings, this effectively changes maximum number of requests per connection from 1000 to 100. This looks acceptable, especially given that HTTP/2 code now properly supports lingering close. Further, this changes default keepalive timeout in HTTP/2 from 300 seconds to 75 seconds. This also looks acceptable, and larger than PING interval used by Firefox (network.http.spdy.ping-threshold defaults to 58s), the only browser to use PINGs.
2021-02-11HTTP/2: removed http2_recv_timeout.Maxim Dounin3-14/+42
Instead, the client_header_timeout is now used for HTTP/2 reading. Further, the timeout is changed to be set once till no further data left to read, similarly to how client_header_timeout is used in other places.
2021-02-11HTTP/2: removed SPDY directives handling.Maxim Dounin2-77/+0
The spdy_* directives are not available since introduction of HTTP/2 module in nginx 1.9.5 more than five years ago.