summaryrefslogtreecommitdiffhomepage
path: root/auto (follow)
AgeCommit message (Collapse)AuthorFilesLines
2025-01-30Configure: fixed --with-libatomic=DIR with recent libatomic_ops.Sergey Kandaurov2-5/+10
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
2024-10-15Configure: MSVC compatibility with PCRE2 10.43.Thierry Bastian1-1/+2
2024-10-01SSL: object caching.Sergey Kandaurov1-1/+2
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.
2024-05-16Configure: fixed building libatomic test.Edgar Bonet1-1/+1
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>
2024-02-26Configure: allow cross-compiling to Windows using Clang.Piotr Sikora1-1/+1
Signed-off-by: Piotr Sikora <piotr@aviatrix.com>
2024-02-26Configure: fixed "make install" when cross-compiling to Windows.Piotr Sikora1-1/+1
Signed-off-by: Piotr Sikora <piotr@aviatrix.com>
2024-02-26Configure: added support for Homebrew on Apple Silicon.Piotr Sikora5-0/+84
Signed-off-by: Piotr Sikora <piotr@aviatrix.com>
2024-03-27Configure: set cache line size for more architectures.Sergey Kandaurov1-0/+15
Based on a patch by Piotr Sikora.
2024-02-26Configure: fixed Linux crypt_r() test to add libcrypt.Sergey Kandaurov1-0/+4
Previously, the resulting binary was successfully linked because libcrypt was added in a separate test for crypt(). Patch by Piotr Sikora.
2024-02-21Stream: ngx_stream_pass_module.Roman Arutyunyan2-0/+13
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; } } }
2023-06-21SSL: avoid using OpenSSL config in build directory (ticket #2404).Maxim Dounin1-0/+2
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.
2023-06-08HTTP/2: removed server push (ticket #2432).Sergey Kandaurov1-2/+0
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
2023-05-14Stream: removed QUIC support.Roman Arutyunyan2-17/+0
2023-05-06QUIC: disabled datagram fragmentation.Roman Arutyunyan1-0/+48
As per RFC 9000, Section 14: UDP datagrams MUST NOT be fragmented at the IP layer.
2023-03-29Merged with the default branch.Sergey Kandaurov6-6/+34
2023-02-23Win32: OpenSSL compilation for x64 targets with MSVC.Maxim Dounin3-2/+30
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.
2023-02-23Win32: i386 now assumed when crossbuilding (ticket #2416).Maxim Dounin1-0/+1
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.
2023-02-23Win32: handling of localized MSVC cl output.Maxim Dounin1-2/+2
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.
2023-02-23Win32: removed unneeded wildcard in NGX_CC_NAME test for msvc.Maxim Dounin1-1/+1
Wildcards for msvc in NGX_CC_NAME tests are not needed since 78f8ac479735.
2023-02-22QUIC: OpenSSL compatibility layer.Roman Arutyunyan2-26/+34
The change allows to compile QUIC with OpenSSL which lacks BoringSSL QUIC API. This implementation does not support 0-RTT.
2023-01-24QUIC: improved SO_COOKIE configure test.Maxim Dounin1-1/+1
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.
2023-01-23Configure: removed unneeded header from UDP_SEGMENT test.Maxim Dounin1-1/+0
2022-09-07Win32: disabled threads support in OpenSSL builds.Maxim Dounin1-1/+1
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.
2022-10-20Merged with the default branch.Sergey Kandaurov1-1/+1
2022-06-22Merged with the default branch.Sergey Kandaurov1-1/+1
2022-04-29Configure: recognize arm64 machine name as a synonym for aarch64.Sergey Kandaurov1-1/+1
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.
2022-04-20QUIC: separate UDP framework for QUIC.Roman Arutyunyan1-0/+1
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.
2022-02-14Merged with the default branch.Sergey Kandaurov1-3/+3
2022-01-26Core: added autotest for UDP segmentation offloading.Vladimir Homutov1-0/+16
2022-01-25Core: the ngx_event_udp.h header file.Vladimir Homutov1-1/+2
2021-12-29Merged with the default branch.Sergey Kandaurov5-100/+221
2021-12-27Simplified sendfile(SF_NODISKIO) usage.Maxim Dounin1-5/+3
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;".
2021-12-25PCRE2 library support.Maxim Dounin4-43/+223
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.
2021-12-25Configure: simplified PCRE compilation.Maxim Dounin1-65/+8
Removed ICC-specific PCRE optimizations which tried to link with PCRE object files instead of the library. Made compiler-specific code minimal.
2021-12-21Moved Huffman coding out of HTTP/2.Ruslan Ermilov2-2/+8
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.
2021-12-24Merged with the default branch.Ruslan Ermilov2-8/+8
2021-12-09QUIC: removed configure time test for BPF sockhash.Ruslan Ermilov1-14/+1
The test verifies kernel version on a build machine, but actually used kernel may be different.
2021-12-09QUIC: configure cleanup.Ruslan Ermilov3-45/+32
Renamed and removed some macros.
2021-12-07HTTP/3: renamed files.Roman Arutyunyan1-4/+4
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.
2021-12-06HTTP/3: merged ngx_http_quic_module into ngx_http_v3_module.Roman Arutyunyan2-19/+3
2021-09-27Configure: fixed QUIC support test.Ruslan Ermilov1-23/+22
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.
2021-09-27Configure: check for QUIC 0-RTT support at compile time.Ruslan Ermilov1-9/+0
2021-09-21Configure: USE_OPENSSL_QUIC=YES implies USE_OPENSSL=YES.Ruslan Ermilov1-1/+1
2021-09-21Configure: ordered directories.Ruslan Ermilov1-2/+2
2021-09-21Configure: simplified condition.Ruslan Ermilov1-3/+0
2021-09-14Removed NGX_OPENSSL_QUIC macro, NGX_QUIC is enough.Ruslan Ermilov1-3/+1
2021-09-09Changed the OpenSSL QUIC support detection.Ruslan Ermilov1-1/+1
As was changed in 253cf267f95a.
2021-08-05QUIC: better ordering in auto/modules.Vladimir Homutov1-20/+20
2021-08-05HTTP/3: got rid of HTTP/2 module dependency.Vladimir Homutov1-3/+6
The Huffman encoder/decoder now can be built separately from HTTP/2 module.
2021-07-15QUIC: added support for segmentation offloading.Vladimir Homutov1-0/+21
To improve output performance, UDP segmentation offloading is used if available. If there is a significant amount of data in an output queue and path is verified, QUIC packets are not sent one-by-one, but instead are collected in a buffer, which is then passed to kernel in a single sendmsg call, using UDP GSO. Such method greatly decreases number of system calls and thus system load.