summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)AuthorFilesLines
2015-03-14Added support for offloading Linux sendfile() in thread pools.Valentin Bartenev2-8/+187
2015-03-14Added support for offloading read() in thread pools.Valentin Bartenev9-13/+311
2015-03-14Events: implemented eventport notification mechanism.Ruslan Ermilov1-1/+34
2015-03-14Events: implemented kqueue notification mechanism.Valentin Bartenev1-0/+76
2015-03-14Events: implemented epoll notification mechanism.Valentin Bartenev2-2/+162
2015-03-14Thread pools implementation.Valentin Bartenev26-2/+1112
2015-03-13Configure: removed obsolete threads bits.Ruslan Ermilov4-52/+0
2015-03-04Renamed NGX_THREADS to NGX_OLD_THREADS because of deprecation.Ruslan Ermilov19-35/+39
It's mostly dead code and the original idea of worker threads has been rejected.
2015-03-18Configure: fixed type max value detection.Ruslan Ermilov1-12/+2
The code tried to use suffixes for "long" and "long long" types, but it never worked as intended due to the bug in the shell code. Also, the max value for any 64-bit type other than "long long" on platforms with 32-bit "long" would be incorrect if the bug was fixed. So instead of fixing the bug in the shell code, always use the "int" constant for 32-bit types, and "long long" constant for 64-bit types.
2015-03-17Overflow detection in ngx_http_parse_chunked().Ruslan Ermilov1-4/+8
2015-03-17Overflow detection in ngx_http_range_parse().Ruslan Ermilov1-1/+12
2015-03-17Overflow detection in ngx_inet_addr().Ruslan Ermilov1-2/+6
2015-03-17Core: overflow detection in ngx_parse_time() (ticket #732).Ruslan Ermilov1-16/+37
2015-03-17Refactored ngx_parse_time().Ruslan Ermilov1-3/+1
No functional changes.
2015-03-17Core: overflow detection in number parsing functions.Ruslan Ermilov2-52/+72
2015-03-17Core: expose maximum values of time_t and ngx_int_t.Ruslan Ermilov3-0/+6
These are needed to detect overflows.
2015-03-13Configure: removed redundant auto/have call.Ruslan Ermilov1-1/+0
The auto/feature call above is enough to set NGX_HAVE_SENDFILE.
2015-03-13The "aio" directive parser made smarter.Ruslan Ermilov2-27/+52
It now prints meaningful warnings on all platforms. No functional changes.
2015-03-12Events: fixed typo in the error message.Ruslan Ermilov1-1/+1
2015-03-12Deprecated "aio sendfile".Ruslan Ermilov3-9/+4
Specifying "sendfile on" along with "aio on" activates the aio pre-loading mode for sendfile().
2015-03-04Proxy: use an appropriate error on memory allocation failure.Ruslan Ermilov1-1/+1
2015-03-04Style: moved ngx_http_ephemeral() macro to ngx_http_request.h.Ruslan Ermilov2-3/+3
2015-03-04Style: use %*s format, as in 68d21fd1dc64.Ruslan Ermilov1-8/+3
2015-03-04Log: use ngx_cpymem() in a couple of places, no functional changes.Valentin Bartenev1-6/+3
2015-03-03Upstream keepalive: drop ready flag on EAGAIN from recv(MSG_PEEK).Valentin Bartenev1-1/+1
Keeping the ready flag in this case might results in missing notification of broken connection until nginx tried to use it again. While there, stale comment about stale event was removed since this function is also can be called directly.
2015-03-03Events: simplified ngx_event_aio_t definition.Ruslan Ermilov1-4/+2
No functional changes.
2015-02-27Refactored ngx_linux_sendfile_chain() even more.Valentin Bartenev1-46/+60
The code that calls sendfile() was cut into a separate function. This simplifies EINTR processing, yet is needed for the following changes that add threads support.
2015-03-03Style.Maxim Dounin1-2/+2
Noted by Ruslan Ermilov.
2015-03-02Upstream: upstream argument in ngx_http_upstream_process_request().Maxim Dounin1-6/+6
In case of filter finalization, r->upstream might be changed during the ngx_event_pipe() call. Added an argument to preserve it while calling the ngx_http_upstream_process_request() function.
2015-03-02Upstream: avoid duplicate finalization.Maxim Dounin1-3/+7
A request may be already finalized when ngx_http_upstream_finalize_request() is called, due to filter finalization: after filter finalization upstream can be finalized via ngx_http_upstream_cleanup(), either from ngx_http_terminate_request(), or because a new request was initiated to an upstream. Then the upstream code will see an error returned from the filter chain and will call the ngx_http_upstream_finalize_request() function again. To prevent corruption of various upstream data in this situation, make sure to do nothing but merely call ngx_http_finalize_request(). Prodded by Yichun Zhang, for details see the thread at http://nginx.org/pipermail/nginx-devel/2015-February/006539.html.
2015-03-02SSL: reset ready flag if recv(MSG_PEEK) found no bytes in socket.Roman Arutyunyan1-0/+1
Previously, connection hung after calling ngx_http_ssl_handshake() with rev->ready set and no bytes in socket to read. It's possible in at least the following cases: - when processing a connection with expired TCP_DEFER_ACCEPT on Linux - after parsing PROXY protocol header if it arrived in a separate TCP packet Thanks to James Hamlin.
2015-03-02Cache: do not inherit last_modified and etag from stale response.Roman Arutyunyan2-2/+7
When replacing a stale cache entry, its last_modified and etag could be inherited from the old entry if the response code is not 200 or 206. Moreover, etag could be inherited with any response code if it's missing in the new response. As a result, the cache entry is left with invalid last_modified or etag which could lead to broken revalidation. For example, when a file is deleted from backend, its last_modified is copied to the new 404 cache entry and is used later for revalidation. Once the old file appears again with its original timestamp, revalidation succeeds and the cached 404 response is sent to client instead of the file. The problem appeared with etags in 44b9ab7752e3 (1.7.3) and affected last_modified in 1573fc7875fa (1.7.9).
2015-03-02Upstream hash: speedup consistent hash init.Roman Arutyunyan1-21/+31
Repeatedly calling ngx_http_upstream_add_chash_point() to create the points array in sorted order, is O(n^2) to the total weight. This can cause nginx startup and reconfigure to be substantially delayed. For example, when total weight is 1000, startup takes 5s on a modern laptop. Replace this with a linear insertion followed by QuickSort and duplicates removal. Startup for total weight of 1000 reduces to 40ms. Based on a patch by Wai Keen Woon.
2015-02-27Mail: don't emit Auth-SSL-Verify with disabled ssl_verify_client.Sergey Kandaurov1-5/+9
Previously, the Auth-SSL-Verify header with the "NONE" value was always passed to the auth_http script if verification of client certificates is disabled.
2015-02-25Mail: client SSL certificates support.Maxim Dounin8-4/+294
The "ssl_verify_client", "ssl_verify_depth", "ssl_client_certificate", "ssl_trusted_certificate", and "ssl_crl" directives introduced to control SSL client certificate verification in mail proxy module. If there is a certificate, detail of the certificate are passed to the auth_http script configured via Auth-SSL-Verify, Auth-SSL-Subject, Auth-SSL-Issuer, Auth-SSL-Serial, Auth-SSL-Fingerprint headers. If the auth_http_pass_client_cert directive is set, client certificate in PEM format will be passed in the Auth-SSL-Cert header (urlencoded). If there is no required certificate provided during an SSL handshake or certificate verification fails then a protocol-specific error is returned after the SSL handshake and the connection is closed. Based on previous work by Sven Peter, Franck Levionnois and Filipe Da Silva.
2015-02-25Mail: added Auth-SSL header to indicate SSL.Maxim Dounin1-0/+12
Based on a patch by Filipe da Silva.
2015-02-25Mail: fixed buffer allocation for CRLF after Auth-SMTP-* headers.Maxim Dounin1-3/+3
There were no buffer overruns in real life as there is extra space allocated for the Auth-Login-Attempt counter.
2015-02-24SSL: account sent bytes in ngx_ssl_write().Ruslan Ermilov1-2/+2
2015-02-24Core: fixed potential buffer overrun when initializing hash.Maxim Dounin1-1/+1
Initial size as calculated from the number of elements may be bigger than max_size. If this happens, make sure to set size to max_size. Reported by Chris West.
2015-02-17Cache: reduced diffs to the plus version of nginx.Ruslan Ermilov1-6/+4
No functional changes.
2015-02-17Core: make ngx_connection_local_sockaddr() always assign address.Roman Arutyunyan1-17/+17
Previously, this function checked for connection local address existence and returned error if it was missing. Now a new address is assigned in this case making it possible to call this function not only for accepted connections.
2015-02-11Configure: typo fixed.Sergey Kandaurov1-1/+1
2015-02-11Unbreak building on FreeBSD without file AIO.Valentin Bartenev2-4/+6
It appeared that the NGX_HAVE_AIO_SENDFILE macro was defined regardless of the "--with-file-aio" configure option and the NGX_HAVE_FILE_AIO macro. Now they are related. Additionally, fixed one macro.
2015-02-11Refactored sendfile() AIO preload.Valentin Bartenev10-119/+187
This reduces layering violation and simplifies the logic of AIO preread, since it's now triggered by the send chain function itself without falling back to the copy filter. The context of AIO operation is now stored per file buffer, which makes it possible to properly handle cases when multiple buffers come from different locations, each with its own configuration.
2015-01-23Mail: fixed the duplicate listen address detection.Ruslan Ermilov1-2/+2
2015-01-23Mail: fixed a comment.Ruslan Ermilov1-1/+1
2015-01-22Upstream: detect port absence in fastcgi_pass with IP literal.Ruslan Ermilov1-1/+1
If fastcgi_pass (or any look-alike that doesn't imply a default port) is specified as an IP literal (as opposed to a hostname), port absence was not detected at configuration time and could result in EADDRNOTAVAIL at run time. Fixed this in such a way that configs like http { server { location / { fastcgi_pass 127.0.0.1; } } upstream 127.0.0.1 { server 10.0.0.1:12345; } } still work. That is, port absence check is delayed until after we make sure there's no explicit upstream with such a name.
2015-02-11Version bump.Ruslan Ermilov1-2/+2
2015-02-10release-1.7.10 tagMaxim Dounin1-0/+1
2015-02-10nginx-1.7.10-RELEASErelease-1.7.10Maxim Dounin1-0/+92