summaryrefslogtreecommitdiffhomepage
path: root/auto (follow)
AgeCommit message (Collapse)AuthorFilesLines
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.
2021-07-12Core: the ngx_event_udp.h header file.Vladimir Homutov1-1/+2
2021-05-05HTTP/3: moved session initialization to a separate file.Roman Arutyunyan1-1/+2
Previously it was in ngx_http_v3_streams.c, but it's unrelated to streams.
2021-05-05HTTP/3: separate header files for existing source files.Roman Arutyunyan1-1/+4
2021-04-29QUIC: connection migration.Vladimir Homutov1-2/+4
The patch adds proper transitions between multiple networking addresses that can be used by a single quic connection. New networking paths are validated using PATH_CHALLENGE/PATH_RESPONSE frames.
2021-04-14QUIC: separate files for SSL library interfaces.Vladimir Homutov1-0/+2
2021-04-13QUIC: separate files for tokens related processing.Vladimir Homutov1-0/+2
2021-04-13QUIC: separate files for output and ack related processing.Vladimir Homutov1-2/+6
2021-04-13QUIC: separate files for stream related processing.Vladimir Homutov1-2/+4
2021-04-13QUIC: separate files for frames related processing.Vladimir Homutov1-0/+2
2021-04-13QUIC: separate files for connection id related processing.Vladimir Homutov1-0/+2
2021-04-05Configure: fixed --test-build-epoll on FreeBSD 13.Maxim Dounin2-23/+25
In FreeBSD 13, eventfd(2) was added, and this breaks build with --test-build-epoll and without --with-file-aio. Fix is to move eventfd(2) detection to auto/os/linux, as it is used only on Linux as a notification mechanism for epoll().
2021-04-16Merged with the default branch.Sergey Kandaurov2-23/+25
2021-03-31QUIC: distinct files for connection migration.Vladimir Homutov1-2/+4
The connection migration-related code from quic.c with dependencies is moved into separate file.
2021-03-31QUIC: separate header for ngx_quic_connection_t.Vladimir Homutov1-1/+2
2021-03-10Merged with the default branch.Sergey Kandaurov4-26/+24
2021-03-05Mail: realip module.Maxim Dounin1-0/+6
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-01Introduced strerrordesc_np() support.Maxim Dounin1-6/+22
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 Dounin1-28/+0
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-02-20Configure: marked top-level make targets as phony.Ruslan Ermilov2-0/+4
Reported by Thibault Nélis.
2020-12-25QUIC: ngx_quic_bpf module.Vladimir Homutov3-0/+61
The quic kernel bpf helper inspects packet payload for DCID, extracts key and routes the packet into socket matching the key. Due to reuseport feature, each worker owns a personal socket, which is identified by the same key, used to create DCID. BPF objects are locked in RAM and are subject to RLIMIT_MEMLOCK. The "ulimit -l" command may be used to setup proper limits, if maps cannot be created with EPERM or updated with ETOOLONG.
2020-12-15Core: added interface to linux bpf() system call.Vladimir Homutov2-0/+28
It contains wrappers for operations with BPF maps and for loading BPF programs.
2020-12-25QUIC: ngx_quic_module.Vladimir Homutov1-10/+18
2020-12-25QUIC: moved all quic sources into src/event/quic.Vladimir Homutov3-8/+9
2020-11-27HTTP/3: introduced ngx_http_v3_filter.Roman Arutyunyan1-0/+13
The filter is responsible for creating HTTP/3 response header and body. The change removes differences to the default branch for ngx_http_chunked_filter_module and ngx_http_header_filter_module.
2020-11-19Core: "-e" command line option.Igor Ippolitov1-0/+4
When installing or running from a non-root user it is sometimes required to override default, compiled in error log path. There was no way to do this without rebuilding the binary (ticket #147). This patch introduced "-e" command line option which allows one to override compiled in error log path.
2020-11-24Merged with the default branch.Sergey Kandaurov4-8/+55
2020-11-10Configure: shared sources for addon modules.Maxim Dounin3-3/+45
Addon modules, both dynamic and static, can now use shared source files. Shared sources result in only one make rule even if specified several times in different modules.
2020-11-10Configure: initialization of NGX_ADDON_SRCS.Maxim Dounin1-0/+1
2020-11-10Configure: style.Maxim Dounin1-5/+5
2020-10-01Merged with the default branch.Sergey Kandaurov2-0/+13
2020-08-28Stream: set module.Pavel Pautov2-0/+13
Adds 'set' directive to the stream server context.
2020-07-13HTTP/3: renamed ngx_http_v3.c to ngx_http_v3_encode.c.Roman Arutyunyan1-1/+1
The file contains only encoding functions.
2020-07-21QUIC: added "quic" listen parameter in Stream.Roman Arutyunyan2-0/+17
Also, introduced ngx_stream_quic_module.
2020-07-21QUIC: added "quic" listen parameter.Roman Arutyunyan3-4/+20
The parameter allows processing HTTP/0.9-2 over QUIC. Also, introduced ngx_http_quic_module and moved QUIC settings there
2020-06-01Compatibility with BoringSSL master branch.Sergey Kandaurov1-0/+12
Recently BoringSSL introduced SSL_set_quic_early_data_context() that serves as an additional constrain to enable 0-RTT in QUIC. Relevant changes: * https://boringssl.googlesource.com/boringssl/+/7c52299%5E!/ * https://boringssl.googlesource.com/boringssl/+/8519432%5E!/
2020-05-01Configure: fixed static compilation with OpenSSL 1.1.1 / BoringSSL.Sergey Kandaurov1-1/+1
See 7246:04ebf29eaf5b for details.
2020-04-30Configure: unbreak with old OpenSSL, --with-http_v3_module added.Sergey Kandaurov3-18/+48
2020-03-18Refactored HTTP/3 parser.Roman Arutyunyan1-1/+3
2020-03-18Extracted transport part of the code into separate file.Vladimir Homutov1-3/+5
All code dealing with serializing/deserializing is moved int srv/event/ngx_event_quic_transport.c/h file. All macros for dealing with data are internal to source file. The header file exposes frame types and error codes. The exported functions are currently packet header parsers and writers and frames parser/writer. The ngx_quic_header_t structure is updated with 'log' member. This avoids passing extra argument to parsing functions that need to report errors.
2020-03-16Split transport and crypto parts into separate files.Vladimir Homutov1-2/+4
New files: src/event/ngx_event_quic_protection.h src/event/ngx_event_quic_protection.c The protection.h header provides interface to the crypto part of the QUIC: 2 functions to initialize corresponding secrets: ngx_quic_set_initial_secret() ngx_quic_set_encryption_secret() and 2 functions to deal with packet processing: ngx_quic_encrypt() ngx_quic_decrypt() Also, structures representing secrets are defined there. All functions require SSL connection and a pool, only crypto operations inside, no access to nginx connections or events. Currently pool->log is used for the logging (instead of original c->log).
2020-03-13HTTP/3.Roman Arutyunyan3-2/+24
2020-02-28QUIC add_handshake_data callback, varint routines.Sergey Kandaurov1-1/+2
2020-02-28Initial QUIC support in http.Sergey Kandaurov1-1/+2
2020-02-28HTTP UDP layer, QUIC support autotest.Sergey Kandaurov1-0/+9