aboutsummaryrefslogtreecommitdiff
path: root/src/core
Commit message (Collapse)AuthorAge
* QUIC: ngx_quic_bpf module.Vladimir Homutov2020-12-25
| | | | | | | | | | | | 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.
* Core: added interface to linux bpf() system call.Vladimir Homutov2020-12-15
| | | | It contains wrappers for operations with BPF maps and for loading BPF programs.
* Merged with the default branch.Sergey Kandaurov2020-12-15
|\
| * Version bump.Ruslan Ermilov2020-11-26
| |
* | Merged with the default branch.Sergey Kandaurov2020-11-24
|\|
| * Core: "-e" command line option.Igor Ippolitov2020-11-19
| | | | | | | | | | | | | | | | | | 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.
| * Core: added format specifiers to output binary data as hex.Vladimir Homutov2020-10-28
| | | | | | | | | | | | | | Now "s", "V", and "v" format specifiers may be prefixed with "x" (lowercase) or "X" (uppercase) to output corresponding data in hexadecimal format. In collaboration with Maxim Dounin.
| * Version bump.Vladimir Homutov2020-11-05
| |
* | Core: hide "struct ngx_quic_connection_s" and further reduce diffs.Sergey Kandaurov2020-11-13
| | | | | | | | | | As with the previous change, it became feasible with feec2cc762f6 that removes ngx_quic_connection_t from ngx_connection_s.
* | Core: reduced diff to the default branch.Sergey Kandaurov2020-11-13
| | | | | | | | | | It became feasible to reduce after feec2cc762f6 that removes ngx_quic_connection_t from ngx_connection_s.
* | QUIC: renamed c->qs to c->quic.Roman Arutyunyan2020-11-10
| |
* | QUIC: got rid of the c->quic field.Roman Arutyunyan2020-11-10
| | | | | | | | Now QUIC connection is accessed via the c->udp field.
* | Merged with the default branch.Sergey Kandaurov2020-10-29
|\|
| * Core: ngx_conf_set_keyval_slot() now accepts NGX_CONF_UNSET_PTR.Maxim Dounin2020-10-22
| | | | | | | | | | | | | | | | | | | | With this change, it is now possible to use ngx_conf_merge_ptr_value() to merge keyval arrays. This change actually follows much earlier changes in ngx_conf_merge_ptr_value() and ngx_conf_set_str_array_slot() in 1452:cd586e963db0 (0.6.10) and 1701:40d004d95d88 (0.6.22). To preserve compatibility with existing 3rd party modules, both NULL and NGX_CONF_UNSET_PTR are accepted for now.
| * Version bump.Maxim Dounin2020-10-03
| |
* | Merged with the default branch.Sergey Kandaurov2020-10-01
|\|
| * Resolver: improved error messages (ticket #2024).Maxim Dounin2020-09-28
| |
| * Version bump.Roman Arutyunyan2020-08-14
| |
* | Merged with the default branch.Roman Arutyunyan2020-08-18
|\|
| * Core: reusing connections in advance.Maxim Dounin2020-08-10
| | | | | | | | | | | | | | | | | | | | | | | | | | Reworked connections reuse, so closing connections is attempted in advance, as long as number of free connections is less than 1/16 of worker connections configured. This ensures that new connections can be handled even if closing a reusable connection requires some time, for example, for a lingering close (ticket #2017). The 1/16 ratio is selected to be smaller than 1/8 used for disabling accept when working with accept mutex, so nginx will try to balance new connections to different workers first, and will start reusing connections only if this won't help.
| * Core: added a warning about reusing connections.Maxim Dounin2020-08-10
| | | | | | | | | | | | | | | | | | | | | | Previously, reusing connections happened silently and was only visible in monitoring systems. This was shown to be not very user-friendly, and administrators often didn't realize there were too few connections available to withstand the load, and configured timeouts (keepalive_timeout and http2_idle_timeout) were effectively reduced to keep things running. To provide at least some information about this, a warning is now logged (at most once per second, to avoid flooding the logs).
| * Core: enclosed parameters of the ngx_buf.h macros in parentheses.balus2020-07-27
| |
| * Core: close PID file when writing fails.Ruslan Ermilov2020-07-21
| | | | | | | | Reported by Jinhua Tan.
| * Version bump.Roman Arutyunyan2020-07-09
| |
* | QUIC: fixed bulding perl module by reducing header pollution.Sergey Kandaurov2020-07-22
| | | | | | | | | | | | | | | | | | The ngx_http_perl_module module doesn't have a notion of including additional search paths through --with-cc-opt, which results in compile error incomplete type 'enum ssl_encryption_level_t' when building nginx without QUIC support. The enum is visible from quic event headers and eventually pollutes ngx_core.h. The fix is to limit including headers to compile units that are real consumers.
* | QUIC: added "quic" listen parameter.Roman Arutyunyan2020-07-21
| | | | | | | | | | | | The parameter allows processing HTTP/0.9-2 over QUIC. Also, introduced ngx_http_quic_module and moved QUIC settings there
* | Merged with the default branch.Sergey Kandaurov2020-07-13
|\|
| * Fixed removing of listening UNIX sockets when "changing binary".Ruslan Ermilov2020-06-01
| | | | | | | | | | | | When changing binary, sending a SIGTERM to the new binary's master process should not remove inherited UNIX sockets unless the old binary's master process has exited.
| * Version bump.Maxim Dounin2020-05-26
| |
* | Do not close QUIC sockets in ngx_close_listening_sockets().Sergey Kandaurov2020-06-23
| | | | | | | | This breaks graceful shutdown of QUIC connections in terms of quic-transport.
* | Merged with the default branch.Sergey Kandaurov2020-05-26
|\|
| * Version bump.Ruslan Ermilov2020-04-23
| |
* | Configure: unbreak with old OpenSSL, --with-http_v3_module added.Sergey Kandaurov2020-04-30
| |
* | Merged with the default branch.Sergey Kandaurov2020-04-14
|\|
| * Version bump.Ruslan Ermilov2020-03-16
| |
* | Extracted transport part of the code into separate file.Vladimir Homutov2020-03-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Split transport and crypto parts into separate files.Vladimir Homutov2020-03-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
* | Fixed sanitizer errors.Roman Arutyunyan2020-03-13
| |
* | HTTP/QUIC interface reworked.Vladimir Homutov2020-03-12
| | | | | | | | | | | | | | | | | | | | | | - events handling moved into src/event/ngx_event_quic.c - http invokes once ngx_quic_run() and passes stream callback (diff to original http_request.c is now minimal) - streams are stored in rbtree using ID as a key - when a new stream is registered, appropriate callback is called - ngx_quic_stream_t type represents STREAM and stored in c->qs
* | Initial QUIC support in http.Sergey Kandaurov2020-02-28
|/
* Version bump.Sergey Kandaurov2020-02-05
|
* Version bump.Maxim Dounin2019-12-27
|
* Version bump.Maxim Dounin2019-12-05
|
* Parsing server PROXY protocol address and port (ticket #1206).Roman Arutyunyan2019-10-21
| | | | | New variables $proxy_protocol_server_addr and $proxy_protocol_server_port are added both to HTTP and Stream.
* Core: moved PROXY protocol fields out of ngx_connection_t.Roman Arutyunyan2019-10-21
| | | | | | Now a new structure ngx_proxy_protocol_t holds these fields. This allows to add more PROXY protocol fields in the future without modifying the connection structure.
* Version bump.Roman Arutyunyan2019-10-24
|
* Core: removed dead code in ngx_rbtree_delete().Vladimir Homutov2019-09-30
| | | | | The result of ngx_rbtree_min() is always a node with the left child equal to sentinel, thus the check is unnecessary.
* Version bump.Vladimir Homutov2019-09-30
|
* Resolver: fixed possible use-after-free while resolving PTR.Sergey Kandaurov2019-09-10
| | | | | | | | | | Previously, if a response to the PTR request was cached, and ngx_resolver_dup() failed to allocate memory for the resulting name, then the original node was freed but left in expire_queue. A subsequent address resolving would end up in a use-after-free memory access of the node either in ngx_resolver_expire() or ngx_resolver_process_ptr(), when accessing it through expire_queue. The fix is to leave the resolver node intact.
* Version bump.Maxim Dounin2019-08-16
|