aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* Core: added prefix-based temporary files.Valentin Bartenev2014-12-26
| | | | | Now, if the "path" parameter is NULL, ngx_create_temp_file() will use file->name as a predefined file path prefix.
* Unified handling of ngx_create_temp_file() return value.Valentin Bartenev2014-12-26
| | | | | | | The original check for NGX_AGAIN was surplus, since the function returns only NGX_OK or NGX_ERROR. Now it looks similar to other places. No functional changes.
* Fixed building with musl libc (ticket #685).Maxim Dounin2014-12-24
|
* Version bump.Maxim Dounin2014-12-24
|
* Upstream: added variables support to proxy_cache and friends.Valentin Bartenev2014-12-22
|
* Upstream: preset some cache configuration when bypassing.Valentin Bartenev2014-12-22
| | | | No functional changes.
* Upstream: refactored proxy_cache and friends.Valentin Bartenev2014-12-22
| | | | | | | | The configuration handling code has changed to look similar to the proxy_store directive and friends. This simplifies adding variable support in the following patch. No functional changes.
* Upstream: mutually exclusive inheritance of "cache" and "store".Valentin Bartenev2014-12-22
| | | | | | | | | | | | | | | | | | | | Currently, storing and caching mechanisms cannot work together, and a configuration error is thrown when the proxy_store and proxy_cache directives (as well as their friends) are configured on the same level. But configurations like in the example below were allowed and could result in critical errors in the error log: proxy_store on; location / { proxy_cache one; } Only proxy_store worked in this case. For more predictable and errorless behavior these directives now prevent each other from being inherited from the previous level.
* Upstream: simplified proxy_store and friends configuration code.Valentin Bartenev2014-12-22
| | | | | | | | | This changes internal API related to handling of the "store" flag in ngx_http_upstream_conf_t. Previously, a non-null value of "store_lengths" was enough to enable store functionality with custom path. Now, the "store" flag is also required to be set. No functional changes.
* SSL: safeguard use of SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS.Lukas Tribus2014-12-17
| | | | The flag was recently removed by BoringSSL.
* Autoindex: implemented XML output format.Valentin Bartenev2014-12-12
|
* Autoindex: implemented JSON output format.Valentin Bartenev2014-12-12
|
* Autoindex: rendering code moved to a separate function.Valentin Bartenev2014-12-12
| | | | No functional changes.
* Headers filter: variables support in expires (ticket #113).Maxim Dounin2014-12-11
|
* Headers filter: local variables for config, no functional changes.Maxim Dounin2014-12-11
|
* Upstream: fixed inheritance of proxy_store and friends.Valentin Bartenev2014-10-09
| | | | | | | | | | | | The proxy_store, fastcgi_store, scgi_store and uwsgi_store were inherited incorrectly if a directive with variables was defined, and then redefined to the "on" value, i.e. in configurations like: proxy_store /data/www$upstream_http_x_store; location / { proxy_store on; }
* Proxy: fixed incorrect URI change due to if (ticket #86).Maxim Dounin2014-12-09
| | | | | | | | | | | | | | | | | | In the following configuration request was sent to a backend without URI changed to '/' due to if: location /proxy-pass-uri { proxy_pass http://127.0.0.1:8080/; set $true 1; if ($true) { # nothing } } Fix is to inherit conf->location from the location where proxy_pass was configured, much like it's done with conf->vars.
* Upstream: fixed unexpected inheritance into limit_except blocks.Maxim Dounin2014-12-09
| | | | | | | | | | | | | | | | | | | | | | | | | The proxy_pass directive and other handlers are not expected to be inherited into nested locations, but there is a special code to inherit upstream handlers into limit_except blocks, as well as a configuration into if{} blocks. This caused incorrect behaviour in configurations with nested locations and limit_except blocks, like this: location / { proxy_pass http://u; location /inner/ { # no proxy_pass here limit_except GET { # nothing } } } In such a configuration the limit_except block inside "location /inner/" unexpectedly used proxy_pass defined in "location /", while it shouldn't. Fix is to avoid inheritance of conf->upstream.upstream (and conf->proxy_lengths) into locations which don't have noname flag.
* Upstream: inheritance of proxy_pass and friends (ticket #645).Maxim Dounin2014-12-09
| | | | | | | | | Instead of independant inheritance of conf->upstream.upstream (proxy_pass without variables) and conf->proxy_lengths (proxy_pass with variables) we now test them both and inherit only if neither is set. Additionally, SSL context is also inherited only in this case now. Based on the patch by Alexey Radkov.
* Proxy: the "TE" header now stripped by default (ticket #537).Maxim Dounin2014-12-09
|
* Cache: send conditional requests only for cached 200/206 responses.Piotr Sikora2014-11-26
| | | | | | | | | | | | | | | | | | | RFC7232 says: The 304 (Not Modified) status code indicates that a conditional GET or HEAD request has been received and would have resulted in a 200 (OK) response if it were not for the fact that the condition evaluated to false. which means that there is no reason to send requests with "If-None-Match" and/or "If-Modified-Since" headers for responses cached with other status codes. Also, sending conditional requests for responses cached with other status codes could result in a strange behavior, e.g. upstream server returning 304 Not Modified for cached 404 Not Found responses, etc. Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
* SSL: loading certificate keys via ENGINE_load_private_key().Dmitrii Pichulin2014-08-04
|
* Version bump.Maxim Dounin2014-12-04
|
* Cache: proper wakeup of subrequests.Maxim Dounin2014-12-02
| | | | | | | | | | | | | In case of a cache lock timeout and in the aio handler we now call r->write_event_handler() instead of a connection write handler, to make sure to run appropriate subrequest. Previous code failed to run inactive subrequests and hence resulted in suboptimal behaviour, see report by Yichun Zhang: http://mailman.nginx.org/pipermail/nginx-devel/2013-October/004435.html (Infinite hang claimed in the report seems impossible without 3rd party modules, as subrequests will be eventually woken up by the postpone filter.)
* Upstream: improved subrequest logging.Maxim Dounin2014-12-02
| | | | | | | To ensure proper logging make sure to set current_request in all event handlers, including resolve, ssl handshake, cache lock wait timer and aio read handlers. A macro ngx_http_set_log_request() introduced to simplify this.
* Access log: restricted "log_format" to "http" level.Sergey Kandaurov2014-12-01
| | | | | Specifying the "log_format" directive on levels other than "http" is deprecated since 73d37e1ccb91 (1.1.11).
* Write filter: fixed handling of sync bufs (ticket #132).Maxim Dounin2014-11-28
|
* Fixed post_action to not trigger "header already sent" alert.Maxim Dounin2014-11-28
| | | | | | | | The alert was introduced in 03ff14058272 (1.5.4), and was triggered on each post_action invocation. There is no real need to call header filters in case of post_action, so return NGX_OK from ngx_http_send_header() if r->post_action is set.
* Typo.Maxim Dounin2014-11-28
|
* SPDY: push pending data while closing a stream as with keepalive.Valentin Bartenev2014-11-21
| | | | | | | | | This helps to avoid delays in sending the last chunk of data because of bad interaction between Nagle's algorithm on nginx side and delayed ACK on the client side. Delays could also be caused by TCP_CORK/TCP_NOPUSH if SPDY was working without SSL and sendfile() was used.
* Syslog: allowed underscore symbol in tag (ticket #667).Vladimir Homutov2014-11-20
|
* Resolver: fixed debug event logging.Ruslan Ermilov2014-11-20
| | | | | | | | | In 954867a2f0a6, we switched to using resolver node as the timer event data. This broke debug event logging. Replaced now unused ngx_resolver_ctx_t.ident with ngx_resolver_node_t.ident so that ngx_event_ident() extracts something sensible when accessing ngx_resolver_node_t as ngx_connection_t.
* Resolver: fixed use-after-free memory access.Ruslan Ermilov2014-11-20
| | | | | | In 954867a2f0a6, we switched to using resolver node as the timer event data, so make sure we do not free resolver node memory until the corresponding timer is deleted.
* Style.Valentin Bartenev2014-11-19
|
* Fixed type of sendfile() return value on Linux.Valentin Bartenev2014-11-19
| | | | | There was no real problem since the amount of bytes can be sent is limited by NGX_SENDFILE_MAXSIZE to less than 2G. But that can be changed in the future
* Moved writev() handling code to a separate function.Valentin Bartenev2014-08-13
| | | | | This reduces code duplication and unifies debug logging of the writev() syscall among various send chain functions.
* Merged conditions in the ngx_*_sendfile_chain() functions.Valentin Bartenev2014-08-13
| | | | No functional changes.
* Moved the code for coalescing file buffers to a separate function.Valentin Bartenev2014-08-13
|
* Refactored ngx_solaris_sendfilev_chain().Valentin Bartenev2014-11-19
| | | | | | | Though ngx_solaris_sendfilev_chain() shouldn't suffer from the problem mentioned in d1bde5c3c5d2 since currently IOV_MAX on Solaris is 16, but this follows the change from 3d5717550371 in order to make the code look similar to other systems and potentially eliminates the problem in the future.
* Introduced the ngx_output_chain_to_iovec() function.Valentin Bartenev2014-10-07
| | | | | It deduplicates code of the send chain functions and uses only preallocated memory, which completely solves the problem mentioned in d1bde5c3c5d2.
* Renamed ngx_handle_sent_chain() to ngx_chain_update_sent().Valentin Bartenev2014-11-19
| | | | No functional changes.
* Cache: add support for Cache-Control's s-maxage response directive.Piotr Sikora2014-11-18
| | | | Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
* Proxy: renamed and rearranged fields in proxy configuration.Roman Arutyunyan2014-11-19
| | | | No functional changes.
* Upstream: different header lists for cached and uncached requests.Roman Arutyunyan2014-11-19
| | | | | | | | | | | | The upstream modules remove and alter a number of client headers before sending the request to upstream. This set of headers is smaller or even empty when cache is disabled. It's still possible that a request in a cache-enabled location is uncached, for example, if cache entry counter is below min_uses. In this case it's better to alter a smaller set of headers and pass more client headers to backend unchanged. One of the benefits is enabling server-side byte ranges in such requests.
* Upstream: moved header lists to separate structures.Roman Arutyunyan2014-11-19
| | | | No functional changes.
* Upstream: moved header initializations to separate functions.Roman Arutyunyan2014-11-19
| | | | No functional changes.
* Scgi: do not push redundant NULL element into conf->params.Roman Arutyunyan2014-11-19
|
* Cache: proxy_cache_lock_age and friends.Roman Arutyunyan2014-11-18
| | | | | | Once this age is reached, the cache lock is discarded and another request can acquire the lock. Requests which failed to acquire the lock are not allowed to cache the response.
* SPDY: fixed check for too long header name or value.Valentin Bartenev2014-11-07
| | | | | | | For further progress a new buffer must be at least two bytes larger than the remaining unparsed data. One more byte is needed for null-termination and another one for further progress. Otherwise inflate() fails with Z_BUF_ERROR.
* SPDY: improved debug logging of inflate() calls.Valentin Bartenev2014-11-07
|