aboutsummaryrefslogtreecommitdiff
path: root/auto
Commit message (Collapse)AuthorAge
* Configure: set NGX_KQUEUE_UDATA_T at compile time.Sergey Kandaurov29 hours
| | | | | | | | | The NGX_KQUEUE_UDATA_T macro is used to compensate the incompatible kqueue() API in NetBSD, it doesn't really belong to feature tests. The change limits the macro visibility to the kqueue event module. Moving from autotests also simplifies testing a particular NetBSD version as seen in a subsequent change.
* Core: added support for TCP keepalive parameters on macOS.Sergey Kandaurov2025-05-27
| | | | | | | | | | | | | | | | The support first appeared in OS X Mavericks 10.9 and documented since OS X Yosemite 10.10. It has a subtle implementation difference from other operating systems in that the TCP_KEEPALIVE socket option (used in place of TCP_KEEPIDLE) isn't inherited from a listening socket to an accepted socket. An apparent reason for this behaviour is that it might be preserved for the sake of backward compatibility. The TCP_KEEPALIVE socket option is not inherited since appearance in OS X Panther 10.3, which long predates two other TCP_KEEPINTVL and TCP_KEEPCNT socket options. Thanks to Andy Pan for initial work.
* QUIC: using QUIC API introduced in OpenSSL 3.5.Sergey Kandaurov2025-05-23
| | | | | | | | | | | | | | Similarly to the QUIC API originated in BoringSSL, this API allows to register custom TLS callbacks for an external QUIC implementation. See the SSL_set_quic_tls_cbs manual page for details. Due to a different approach used in OpenSSL 3.5, handling of CRYPTO frames was streamlined to always write an incoming CRYPTO buffer to the crypto context. Using SSL_provide_quic_data(), this results in transient allocation of chain links and buffers for CRYPTO frames received in order. Testing didn't reveal performance degradation of QUIC handshakes, https://github.com/nginx/nginx/pull/646 provides specific results.
* QUIC: defined SSL API macros in a single place.Sergey Kandaurov2025-05-23
| | | | | | | All definitions now set in ngx_event_quic.h, this includes moving NGX_QUIC_OPENSSL_COMPAT from autotests to compile time. Further, to improve code readability, a new NGX_QUIC_QUICTLS_API macro is used for QuicTLS that provides old BoringSSL QUIC API.
* Win32: added detection of ARM64 target.Aleksei Bavshin2025-04-18
| | | | | | | | | | | This extends the target selection implemented in dad6ec3aa63f to support Windows ARM64 platforms. OpenSSL support for VC-WIN64-ARM target first appeared in 1.1.1 and is present in all currently supported (3.x) branches. As a side effect, ARM64 Windows builds will get 16-byte alignment along with the rest of non-x86 platforms. This is safe, as malloc on 64-bit Windows guarantees the fundamental alignment of allocations, 16 bytes.
* Configure: MSVC compatibility with PCRE2 10.45.Thierry Bastian2025-02-18
|
* Core: fix build without libcrypt.Piotr Sikora2025-02-18
| | | | | | libcrypt is no longer part of glibc, so it might not be available. Signed-off-by: Piotr Sikora <piotr@aviatrix.com>
* Configure: fixed --with-libatomic=DIR with recent libatomic_ops.Sergey Kandaurov2025-01-30
| | | | | | | | | The build location of the resulting libatomic_ops.a was changed in v7.4.0 after converting libatomic_ops to use libtool. The fix is to use library from the install path, this allows building with both old and new versions. Initially reported here: https://mailman.nginx.org/pipermail/nginx/2018-April/056054.html
* Configure: MSVC compatibility with PCRE2 10.43.Thierry Bastian2024-10-15
|
* SSL: object caching.Sergey Kandaurov2024-10-01
| | | | | | | | | | Added ngx_openssl_cache_module, which indexes a type-aware object cache. It maps an id to a unique instance, and provides references to it, which are dropped when the cycle's pool is destroyed. The cache will be used in subsequent patches. Based on previous work by Mini Hawthorne.
* Configure: fixed building libatomic test.Edgar Bonet2024-05-16
| | | | | | | | | | Using "long *" instead of "AO_t *" leads either to -Wincompatible-pointer-types or -Wpointer-sign warnings, depending on whether long and size_t are compatible types (e.g., ILP32 versus LP64 data models). Notably, -Wpointer-sign warnings are enabled by default in Clang only, and -Wincompatible-pointer-types is an error starting from GCC 14. Signed-off-by: Edgar Bonet <bonet@grenoble.cnrs.fr>
* Configure: allow cross-compiling to Windows using Clang.Piotr Sikora2024-02-26
| | | | Signed-off-by: Piotr Sikora <piotr@aviatrix.com>
* Configure: fixed "make install" when cross-compiling to Windows.Piotr Sikora2024-02-26
| | | | Signed-off-by: Piotr Sikora <piotr@aviatrix.com>
* Configure: added support for Homebrew on Apple Silicon.Piotr Sikora2024-02-26
| | | | Signed-off-by: Piotr Sikora <piotr@aviatrix.com>
* Configure: set cache line size for more architectures.Sergey Kandaurov2024-03-27
| | | | Based on a patch by Piotr Sikora.
* Configure: fixed Linux crypt_r() test to add libcrypt.Sergey Kandaurov2024-02-26
| | | | | | | Previously, the resulting binary was successfully linked because libcrypt was added in a separate test for crypt(). Patch by Piotr Sikora.
* Stream: ngx_stream_pass_module.Roman Arutyunyan2024-02-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The module allows to pass connections from Stream to other modules such as HTTP or Mail, as well as back to Stream. Previously, this was only possible with proxying. Connections with preread buffer read out from socket cannot be passed. The module allows selective SSL termination based on SNI. stream { server { listen 8000 default_server; ssl_preread on; ... } server { listen 8000; server_name foo.example.com; pass 127.0.0.1:8001; # to HTTP } server { listen 8000; server_name bar.example.com; ... } } http { server { listen 8001 ssl; ... location / { root html; } } }
* SSL: avoid using OpenSSL config in build directory (ticket #2404).Maxim Dounin2023-06-21
| | | | | | | | | | | | With this change, the NGX_OPENSSL_NO_CONFIG macro is defined when nginx is asked to build OpenSSL itself. And with this macro automatic loading of OpenSSL configuration (from the build directory) is prevented unless the OPENSSL_CONF environment variable is explicitly set. Note that not loading configuration is broken in OpenSSL 1.1.1 and 1.1.1a (fixed in OpenSSL 1.1.1b, see https://github.com/openssl/openssl/issues/7350). If nginx is used to compile these OpenSSL versions, configuring nginx with NGX_OPENSSL_NO_CONFIG explicitly set to 0 might be used as a workaround.
* HTTP/2: removed server push (ticket #2432).Sergey Kandaurov2023-06-08
| | | | | | | | | | | | | | | | | | Although it has better implementation status than HTTP/3 server push, it remains of limited use, with adoption numbers seen as negligible. Per IETF 102 materials, server push was used only in 0.04% of sessions. It was considered to be "difficult to use effectively" in RFC 9113. Its use is further limited by badly matching to fetch/cache/connection models in browsers, see related discussions linked from [1]. Server push was disabled in Chrome 106 [2]. The http2_push, http2_push_preload, and http2_max_concurrent_pushes directives are made obsolete. In particular, this essentially reverts 7201:641306096f5b and 7207:3d2b0b02bd3d. [1] https://jakearchibald.com/2017/h2-push-tougher-than-i-thought/ [2] https://chromestatus.com/feature/6302414934114304
* Stream: removed QUIC support.Roman Arutyunyan2023-05-14
|
* QUIC: disabled datagram fragmentation.Roman Arutyunyan2023-05-06
| | | | | | As per RFC 9000, Section 14: UDP datagrams MUST NOT be fragmented at the IP layer.
* Merged with the default branch.Sergey Kandaurov2023-03-29
|\
| * Win32: OpenSSL compilation for x64 targets with MSVC.Maxim Dounin2023-02-23
| | | | | | | | | | | | | | | | | | | | To ensure proper target selection the NGX_MACHINE variable is now set based on the MSVC compiler output, and the OpenSSL target is set based on it. This is not important as long as "no-asm" is used (as in misc/GNUmakefile and win32 build instructions), but might be beneficial if someone is trying to build OpenSSL with assembler code.
| * Win32: i386 now assumed when crossbuilding (ticket #2416).Maxim Dounin2023-02-23
| | | | | | | | | | | | | | | | | | | | | | | | Previously, NGX_MACHINE was not set when crossbuilding, resulting in NGX_ALIGNMENT=16 being used in 32-bit builds (if not explicitly set to a correct value). This in turn might result in memory corruption in ngx_palloc() (as there are no usable aligned allocator on Windows, and normal malloc() is used instead, which provides 8 byte alignment on 32-bit platforms). To fix this, now i386 machine is set when crossbuilding, so nginx won't assume strict alignment requirements.
| * Win32: handling of localized MSVC cl output.Maxim Dounin2023-02-23
| | | | | | | | | | | | | | | | | | | | | | Output examples in English, Russian, and Spanish: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 Оптимизирующий 32-разрядный компилятор Microsoft (R) C/C++ версии 16.00.30319.01 для 80x86 Compilador de optimización de C/C++ de Microsoft (R) versión 16.00.30319.01 para x64 Since most of the words are translated, instead of looking for the words "Compiler Version" we now search for "C/C++" and the version number.
| * Win32: removed unneeded wildcard in NGX_CC_NAME test for msvc.Maxim Dounin2023-02-23
| | | | | | | | Wildcards for msvc in NGX_CC_NAME tests are not needed since 78f8ac479735.
| * Configure: removed unneeded header from UDP_SEGMENT test.Maxim Dounin2023-01-23
| |
* | QUIC: OpenSSL compatibility layer.Roman Arutyunyan2023-02-22
| | | | | | | | | | | | The change allows to compile QUIC with OpenSSL which lacks BoringSSL QUIC API. This implementation does not support 0-RTT.
* | QUIC: improved SO_COOKIE configure test.Maxim Dounin2023-01-24
| | | | | | | | | | In nginx source code the inttypes.h include, if available, is used to define standard integer types. Changed the SO_COOKIE configure test to follow this.
* | Merged with the default branch.Sergey Kandaurov2022-10-20
|\|
| * Win32: disabled threads support in OpenSSL builds.Maxim Dounin2022-09-07
| | | | | | | | | | | | | | Threads are disabled during UNIX builds (see b329c0ab1a48), and also not needed for Windows builds. This used to be the default before OpenSSL 1.1.0.
* | Merged with the default branch.Sergey Kandaurov2022-06-22
|\|
| * Configure: recognize arm64 machine name as a synonym for aarch64.Sergey Kandaurov2022-04-29
| | | | | | | | | | In particular, this sets a reasonable cacheline size on FreeBSD and macOS, which prefer to use this name and both lack _SC_LEVEL1_DCACHE_LINESIZE.
* | QUIC: separate UDP framework for QUIC.Roman Arutyunyan2022-04-20
| | | | | | | | | | | | | | Previously, QUIC used the existing UDP framework, which was created for UDP in Stream. However the way QUIC connections are created and looked up is different from the way UDP connections in Stream are created and looked up. Now these two implementations are decoupled.
* | Merged with the default branch.Sergey Kandaurov2022-02-14
|\|
| * Core: added autotest for UDP segmentation offloading.Vladimir Homutov2022-01-26
| |
| * Core: the ngx_event_udp.h header file.Vladimir Homutov2022-01-25
| |
* | Merged with the default branch.Sergey Kandaurov2021-12-29
|\|
| * Simplified sendfile(SF_NODISKIO) usage.Maxim Dounin2021-12-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Starting with FreeBSD 11, there is no need to use AIO operations to preload data into cache for sendfile(SF_NODISKIO) to work. Instead, sendfile() handles non-blocking loading data from disk by itself. It still can, however, return EBUSY if a page is already being loaded (for example, by a different process). If this happens, we now post an event for the next event loop iteration, so sendfile() is retried "after a short period", as manpage recommends. The limit of the number of EBUSY tolerated without any progress is preserved, but now it does not result in an alert, since on an idle system event loop iteration might be very short and EBUSY can happen many times in a row. Instead, SF_NODISKIO is simply disabled for one call once the limit is reached. With this change, sendfile(SF_NODISKIO) is now used automatically as long as sendfile() is enabled, and no longer requires "aio on;".
| * PCRE2 library support.Maxim Dounin2021-12-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The PCRE2 library is now used by default if found, instead of the original PCRE library. If needed for some reason, this can be disabled with the --without-pcre2 configure option. To make it possible to specify paths to the library and include files via --with-cc-opt / --with-ld-opt, the library is first tested without any additional paths and options. If this fails, the pcre2-config script is used. Similarly to the original PCRE library, it is now possible to build PCRE2 from sources with nginx configure, by using the --with-pcre= option. It automatically detects if PCRE or PCRE2 sources are provided. Note that compiling PCRE2 10.33 and later requires inttypes.h. When compiling on Windows with MSVC, inttypes.h is only available starting with MSVC 2013. In older versions some replacement needs to be provided ("echo '#include <stdint.h>' > pcre2-10.xx/src/inttypes.h" is good enough for MSVC 2010). The interface on nginx side remains unchanged.
| * Configure: simplified PCRE compilation.Maxim Dounin2021-12-25
| | | | | | | | | | | | Removed ICC-specific PCRE optimizations which tried to link with PCRE object files instead of the library. Made compiler-specific code minimal.
* | Merged with the default branch.Ruslan Ermilov2021-12-24
|\|
| * Moved Huffman coding out of HTTP/2.Ruslan Ermilov2021-12-21
| | | | | | | | | | ngx_http_v2_huff_decode.c and ngx_http_v2_huff_encode.c are renamed to ngx_http_huff_decode.c and ngx_http_huff_encode.c.
* | QUIC: removed configure time test for BPF sockhash.Ruslan Ermilov2021-12-09
| | | | | | | | | | The test verifies kernel version on a build machine, but actually used kernel may be different.
* | QUIC: configure cleanup.Ruslan Ermilov2021-12-09
| | | | | | | | Renamed and removed some macros.
* | HTTP/3: renamed files.Roman Arutyunyan2021-12-07
| | | | | | | | | | | | | | | | ngx_http_v3_tables.h and ngx_http_v3_tables.c are renamed to ngx_http_v3_table.h and ngx_http_v3_table.c to better match HTTP/2 code. ngx_http_v3_streams.h and ngx_http_v3_streams.c are renamed to ngx_http_v3_uni.h and ngx_http_v3_uni.c to better match their content.
* | HTTP/3: merged ngx_http_quic_module into ngx_http_v3_module.Roman Arutyunyan2021-12-06
| |
* | Configure: fixed QUIC support test.Ruslan Ermilov2021-09-27
| | | | | | | | | | | | OpenSSL library QUIC support cannot be tested at configure time when using the --with-openssl option so assume it's present if requested. While here, fixed the error message in case QUIC support is missing.
* | Configure: check for QUIC 0-RTT support at compile time.Ruslan Ermilov2021-09-27
| |
* | Configure: USE_OPENSSL_QUIC=YES implies USE_OPENSSL=YES.Ruslan Ermilov2021-09-21
| |