]> git.kaiwu.me - nginx.git/log
nginx.git
9 years agoOCSP stapling: added certificate name to warnings.
Maxim Dounin [Mon, 5 Dec 2016 19:23:22 +0000 (22:23 +0300)]
OCSP stapling: added certificate name to warnings.

9 years agoOCSP stapling: added http response status logging.
Maxim Dounin [Mon, 5 Dec 2016 19:23:22 +0000 (22:23 +0300)]
OCSP stapling: added http response status logging.

9 years agoOCSP stapling: style.
Maxim Dounin [Mon, 5 Dec 2016 19:23:22 +0000 (22:23 +0300)]
OCSP stapling: style.

9 years agoSlab: improved double free detection.
Ruslan Ermilov [Sat, 3 Dec 2016 07:01:39 +0000 (10:01 +0300)]
Slab: improved double free detection.

Previously, an attempt to double free the starting page of the
free range was not detected.

9 years agoSlab: always show the requested allocation size in debug messages.
Ruslan Ermilov [Sat, 3 Dec 2016 07:01:03 +0000 (10:01 +0300)]
Slab: always show the requested allocation size in debug messages.

Previously, allocations smaller than min_size were shown as min_size.

9 years agoSlab: style.
Ruslan Ermilov [Sat, 3 Dec 2016 06:55:40 +0000 (09:55 +0300)]
Slab: style.

Removed redundant parentheses.  No functional changes.

9 years agoEvents: improved error event handling for UDP sockets.
Dmitry Volyntsev [Mon, 21 Nov 2016 13:03:42 +0000 (16:03 +0300)]
Events: improved error event handling for UDP sockets.

Normally, the epoll module calls the read and write handlers depending
on whether EPOLLIN and EPOLLOUT are reported by epoll_wait().  No error
processing is done in the module, the handlers are expected to get an
error when doing I/O.

If an error event is reported without EPOLLIN and EPOLLOUT, the module
set both EPOLLIN and EPOLLOUT to ensure the error event is handled at
least in one active handler.

This works well unless the error is delivered along with only one of
EPOLLIN or EPOLLOUT, and the corresponding handler does not do any I/O.
For example, it happened when getting EPOLLERR|EPOLLOUT from
epoll_wait() upon receiving "ICMP port unreachable" while proxying UDP.
As the write handler had nothing to send it was not able to detect and
log an error, and did not switch to the next upstream.

The fix is to unconditionally set EPOLLIN and EPOLLOUT in case of an
error event.  In the aforementioned case, this causes the read handler
to be called which does recv() and detects an error.

In addition to the epoll module, analogous changes were made in
devpoll/eventport/poll.

9 years agoHTTP/2: fixed saving preread buffer to temp file (ticket #1143).
Valentin Bartenev [Mon, 28 Nov 2016 16:19:21 +0000 (19:19 +0300)]
HTTP/2: fixed saving preread buffer to temp file (ticket #1143).

Previously, a request body bigger than "client_body_buffer_size" wasn't written
into a temporary file if it has been pre-read entirely.  The preread buffer
is freed after processing, thus subsequent use of it might result in sending
corrupted body or cause a segfault.

9 years agoConfigure: honor dependencies of dynamic modules.
Maxim Dounin [Mon, 21 Nov 2016 13:49:19 +0000 (16:49 +0300)]
Configure: honor dependencies of dynamic modules.

Dependencies of dynamic modules are added to NGX_ADDON_DEPS (and
it is now used for dynamic modules) to be in line with what happens
in case of static compilation.

To avoid duplication, MAIL_DEPS and STREAM_DEPS are no longer passed
to auto/module when these modules are compiled as dynamic ones.  Mail
and stream dependencies are handled explicitly via corresponding
variables.

9 years agoVersion bump.
Maxim Dounin [Mon, 21 Nov 2016 13:49:17 +0000 (16:49 +0300)]
Version bump.

9 years agorelease-1.11.6 tag
Maxim Dounin [Tue, 15 Nov 2016 15:11:46 +0000 (18:11 +0300)]
release-1.11.6 tag

9 years agonginx-1.11.6-RELEASE release-1.11.6
Maxim Dounin [Tue, 15 Nov 2016 15:11:46 +0000 (18:11 +0300)]
nginx-1.11.6-RELEASE

9 years agoFixed a typo, removed an empty line.
Maxim Dounin [Mon, 14 Nov 2016 18:55:44 +0000 (21:55 +0300)]
Fixed a typo, removed an empty line.

9 years agoUpstream: handling of upstream SSL handshake timeouts.
Maxim Dounin [Mon, 14 Nov 2016 14:21:06 +0000 (17:21 +0300)]
Upstream: handling of upstream SSL handshake timeouts.

Previously SSL handshake timeouts were not properly logged, and resulted
in 502 errors instead of 504 (ticket #1126).

9 years agoRange filter: only initialize ctx->ranges in main request.
hucongcong [Thu, 10 Nov 2016 02:44:52 +0000 (10:44 +0800)]
Range filter: only initialize ctx->ranges in main request.

It is not necessary to initialize ctx->ranges in all request, because
ctx->ranges in subrequest will be reassigned to ctx->ranges of main
request.

9 years agoCore: slight optimization in ngx_chain_update_chains().
hucongcong [Thu, 10 Nov 2016 02:17:53 +0000 (10:17 +0800)]
Core: slight optimization in ngx_chain_update_chains().

It is not necessary to traverse *busy and link the *out when *out is NULL.

9 years agoStyle: switch.
Ruslan Ermilov [Fri, 4 Nov 2016 16:12:19 +0000 (19:12 +0300)]
Style: switch.

9 years agoCache: prefix-based temporary files.
Maxim Dounin [Thu, 3 Nov 2016 14:10:29 +0000 (17:10 +0300)]
Cache: prefix-based temporary files.

On Linux, the rename syscall can be slow due to a global file system lock,
acquired for the entire rename operation, unless both old and new files are
in the same directory.  To address this temporary files are now created
in the same directory as the expected resulting cache file when using the
"use_temp_path=off" parameter.

This change mostly reverts 99639bfdfa2a and 3281de8142f5, restoring the
behaviour as of a9138c35120d (with minor changes).

9 years agoUpstream: avoid holding a cache node with upgraded connections.
Maxim Dounin [Thu, 3 Nov 2016 14:09:32 +0000 (17:09 +0300)]
Upstream: avoid holding a cache node with upgraded connections.

Holding a cache node lock doesn't make sense as we can't use caching
anyway, and results in "ignore long locked inactive cache entry" alerts
if a node is locked for a long time.

The same is done for unbuffered connections, as they can be alive for
a long time as well.

9 years agoCache: proxy_cache_max_range_offset and friends.
Dmitry Volyntsev [Wed, 2 Nov 2016 17:05:21 +0000 (20:05 +0300)]
Cache: proxy_cache_max_range_offset and friends.

It configures a threshold in bytes, above which client range
requests are not cached.  In such a case the client's Range
header is passed directly to a proxied server.

9 years agoHTTP/2: flow control debugging.
Sergey Kandaurov [Wed, 2 Nov 2016 08:47:12 +0000 (11:47 +0300)]
HTTP/2: flow control debugging.

9 years agoPerl: fixed optimization in SSI command handler.
Maxim Dounin [Tue, 1 Nov 2016 17:39:21 +0000 (20:39 +0300)]
Perl: fixed optimization in SSI command handler.

As the pointer to the first argument was tested instead of the argument
itself, array of arguments was always created, even if there were no
arguments.  Fix is to test args[0] instead of args.

Found by Coverity (CID 1356862).

9 years agoHTTP/2: slightly improved debugging.
Ruslan Ermilov [Mon, 31 Oct 2016 20:38:51 +0000 (23:38 +0300)]
HTTP/2: slightly improved debugging.

9 years agoUpstream: removed ngx_http_upstream_srv_conf_t.default_port.
Ruslan Ermilov [Mon, 17 Oct 2016 11:30:54 +0000 (14:30 +0300)]
Upstream: removed ngx_http_upstream_srv_conf_t.default_port.

This is an API change.

9 years agoUpstream: don't consider default_port when matching upstreams.
Ruslan Ermilov [Mon, 17 Oct 2016 11:27:45 +0000 (14:27 +0300)]
Upstream: don't consider default_port when matching upstreams.

The only thing that default_port comparison did in the current
code is prevented implicit upstreams to the same address/port
from being aliased for http and https, e.g.:

proxy_pass http://10.0.0.1:12345;
proxy_pass https://10.0.0.1:12345;

This is inconsistent because it doesn't work for a similar case
with uswgi_pass:

uwsgi_pass uwsgi://10.0.0.1:12345;
uwsgi_pass suwsgi://10.0.0.1:12345;

or with an explicit upstream:

upstream u {
    server 10.0.0.1:12345;
}

proxy_pass http://u;
proxy_pass https://u;

Before c9059bd5445b, default_port comparison was needed to
differentiate implicit upstreams in

proxy_pass http://example.com;

and

proxy_pass https://example.com;

as u->port was not set.

9 years agoUpstream: consistently initialize explicit upstreams.
Ruslan Ermilov [Mon, 17 Oct 2016 11:14:02 +0000 (14:14 +0300)]
Upstream: consistently initialize explicit upstreams.

When an upstream{} block follows a proxy_pass reference to it,
such an upstream inherited port and default_port settings from
proxy_pass.  This was different from when they came in another
order (see ticket #1059).  Explicit upstreams should not have
port and default_port in any case.

This fixes the following case:

server { location / { proxy_pass http://u; } ... }
upstream u { server 127.0.0.1; }
server { location / { proxy_pass https://u; } ... }

but not the following:

server { location / { proxy_pass http://u; } ... }
server { location / { proxy_pass https://u; } ... }
upstream u { server 127.0.0.1; }

9 years agoUpstream: do not unnecessarily create per-request upstreams.
Ruslan Ermilov [Mon, 31 Oct 2016 15:33:36 +0000 (18:33 +0300)]
Upstream: do not unnecessarily create per-request upstreams.

If proxy_pass (and friends) with variables evaluates an upstream
specified with literal address, nginx always created a per-request
upstream.

Now, if there's a matching upstream specified in the configuration
(either implicit or explicit), it will be used instead.

9 years agoUpstream: added the ngx_http_upstream_resolved_t.name field.
Ruslan Ermilov [Mon, 31 Oct 2016 15:33:33 +0000 (18:33 +0300)]
Upstream: added the ngx_http_upstream_resolved_t.name field.

This fixes inconsistency in what is stored in the "host" field.
Normally it would contain the "host" part of the parsed URL
(e.g., proxy_pass with variables), but for the case of an
implicit upstream specified with literal address it contained
the text representation of the socket address (that is, host
including port for IP).

Now the "host" field always contains the "host" part of the URL,
while the text representation of the socket address is stored
in the newly added "name" field.

The ngx_http_upstream_create_round_robin_peer() function was
modified accordingly in a way to be compatible with the code
that does not know about the new "name" field.

The "stream" code was similarly modified except for not adding
compatibility in ngx_stream_upstream_create_round_robin_peer().

This change is also a prerequisite for the next change.

9 years agoUpstream: removed unnecessary condition in proxy_eval() and friends.
Ruslan Ermilov [Mon, 31 Oct 2016 15:33:31 +0000 (18:33 +0300)]
Upstream: removed unnecessary condition in proxy_eval() and friends.

The first condition added in d3454e719bbb should have just replaced
the second one.

9 years agoHTTP/2: limited maximum number of requests in connection.
Valentin Bartenev [Mon, 31 Oct 2016 13:33:02 +0000 (16:33 +0300)]
HTTP/2: limited maximum number of requests in connection.

The new directive "http2_max_requests" is introduced.  From users point of
view it works quite similar to "keepalive_requests" but has significantly
bigger default value that is more suitable for HTTP/2.

9 years agoMp4: introduced custom version of ngx_atofp().
Maxim Dounin [Thu, 27 Oct 2016 14:57:16 +0000 (17:57 +0300)]
Mp4: introduced custom version of ngx_atofp().

This allows to correctly parse "start" and "end" arguments without
null-termination (ticket #475), and also fixes rounding errors observed
with strtod() when using i387 instructions.

9 years agoProxy: support variables for proxy_method directive.
Dmitry Lazurkin [Sun, 16 Oct 2016 15:24:01 +0000 (18:24 +0300)]
Proxy: support variables for proxy_method directive.

9 years agoSSL: RFC2253 compliant $ssl_client_s_dn and $ssl_client_i_dn.
Dmitry Volyntsev [Fri, 21 Oct 2016 13:28:39 +0000 (16:28 +0300)]
SSL: RFC2253 compliant $ssl_client_s_dn and $ssl_client_i_dn.

Originally, the variables kept a result of X509_NAME_oneline(),
which is, according to the official documentation, a legacy
function.  It produces a non standard output form and has
various quirks and inconsistencies.

The RFC2253 compliant behavior is introduced for these variables.
The original variables are available through $ssl_client_s_dn_legacy
and $ssl_client_i_dn_legacy.

9 years agoImage filter: support for WebP.
Valentin Bartenev [Fri, 21 Oct 2016 12:18:44 +0000 (15:18 +0300)]
Image filter: support for WebP.

In collaboration with Ivan Poluyanov.

9 years agoHTTP/2: graceful shutdown of active connections (closes #1106).
Valentin Bartenev [Thu, 20 Oct 2016 13:15:03 +0000 (16:15 +0300)]
HTTP/2: graceful shutdown of active connections (closes #1106).

Previously, while shutting down gracefully, the HTTP/2 connections were
closed in transition to idle state after all active streams have been
processed.  That might never happen if the client continued opening new
streams.

Now, nginx sends GOAWAY to all HTTP/2 connections and ignores further
attempts to open new streams.  A worker process will quit as soon as
processing of already opened streams is finished.

9 years agoSSL: compatibility with BoringSSL.
Maxim Dounin [Wed, 19 Oct 2016 15:36:50 +0000 (18:36 +0300)]
SSL: compatibility with BoringSSL.

BoringSSL changed SSL_set_tlsext_host_name() to be a real function
with a (const char *) argument, so it now triggers a warning due to
conversion from (u_char *).  Added an explicit cast to silence the
warning.

Prodded by Piotr Sikora, Alessandro Ghedini.

9 years agoCore: show file contents only once while dumping configuration.
Vladimir Homutov [Tue, 18 Oct 2016 13:33:38 +0000 (16:33 +0300)]
Core: show file contents only once while dumping configuration.

Files are considered the same if the path used by nginx during parsing matches.

9 years agoSSL: overcame possible buffer over-read in ngx_ssl_error().
Valentin Bartenev [Tue, 18 Oct 2016 17:46:06 +0000 (20:46 +0300)]
SSL: overcame possible buffer over-read in ngx_ssl_error().

It appeared that ERR_error_string_n() cannot handle zero buffer size well enough
and causes over-read.

The problem has also been fixed in OpenSSL:
https://git.openssl.org/?p=openssl.git;h=e5c1361580d8de79682958b04a5f0d262e680f8b

9 years agoMail: support SASL EXTERNAL (RFC 4422).
Rob N ★ [Sat, 8 Oct 2016 07:05:00 +0000 (18:05 +1100)]
Mail: support SASL EXTERNAL (RFC 4422).

This is needed to allow TLS client certificate auth to work. With
ssl_verify_client configured, the auth daemon can choose to allow the
connection to proceed based on the certificate data.

This has been tested with Thunderbird for IMAP only. I've not yet found a
client that will do client certificate auth for POP3 or SMTP, and the method is
not really documented anywhere that I can find. That said, its simple enough
that the way I've done is probably right.

9 years agoMail: extensible auth methods in pop3 module.
Maxim Dounin [Tue, 18 Oct 2016 16:38:46 +0000 (19:38 +0300)]
Mail: extensible auth methods in pop3 module.

9 years agoUpstream: handling of proxy_set_header at http level.
Maxim Dounin [Fri, 14 Oct 2016 16:48:26 +0000 (19:48 +0300)]
Upstream: handling of proxy_set_header at http level.

When headers are set at the "http" level and not redefined in
a server block, we now preserve conf->headers into the "http"
section configuration to inherit it to all servers.

The same applies to conf->headers_cache, though it may not be effective
if no servers use cache at the "server" level as conf->headers_cache
is only initialized if cache is enabled on a given level.

Similar changes made in fastcgi/scgi/uwsgi to preserve conf->params
and conf->params_cache.

9 years agoProxy: do not create conf->headers_source when not needed.
Maxim Dounin [Fri, 14 Oct 2016 16:48:26 +0000 (19:48 +0300)]
Proxy: do not create conf->headers_source when not needed.

9 years agoUpstream: hide_headers_hash handling at http level.
Maxim Dounin [Fri, 14 Oct 2016 16:48:26 +0000 (19:48 +0300)]
Upstream: hide_headers_hash handling at http level.

When headers to hide are set at the "http" level and not redefined in
a server block, we now preserve compiled headers hash into the "http"
section configuration to inherit this hash to all servers.

9 years agoUpstream: hide_headers_hash inherited regardless of cache settings.
Maxim Dounin [Fri, 14 Oct 2016 16:48:26 +0000 (19:48 +0300)]
Upstream: hide_headers_hash inherited regardless of cache settings.

Dependency on cache settings existed prior to 2728c4e4a9ae (0.8.44)
as Set-Cookie header was automatically hidden from responses when
using cache.  This is no longer the case, and hide_headers_hash can
be safely inherited regardless of cache settings.

9 years agoStyle.
Maxim Dounin [Fri, 14 Oct 2016 16:48:26 +0000 (19:48 +0300)]
Style.

9 years agoCache: cache manager debugging.
Ruslan Ermilov [Thu, 13 Oct 2016 12:50:36 +0000 (15:50 +0300)]
Cache: cache manager debugging.

9 years agoVersion bump.
Ruslan Ermilov [Thu, 13 Oct 2016 12:35:48 +0000 (15:35 +0300)]
Version bump.

9 years agorelease-1.11.5 tag
Maxim Dounin [Tue, 11 Oct 2016 15:03:01 +0000 (18:03 +0300)]
release-1.11.5 tag

9 years agonginx-1.11.5-RELEASE release-1.11.5
Maxim Dounin [Tue, 11 Oct 2016 15:03:00 +0000 (18:03 +0300)]
nginx-1.11.5-RELEASE

9 years agoUpdated OpenSSL used for win32 builds.
Maxim Dounin [Tue, 11 Oct 2016 13:52:48 +0000 (16:52 +0300)]
Updated OpenSSL used for win32 builds.

9 years agoModules compatibility: removed dependencies on NGX_MAIL_SSL.
Maxim Dounin [Mon, 10 Oct 2016 15:44:17 +0000 (18:44 +0300)]
Modules compatibility: removed dependencies on NGX_MAIL_SSL.

External structures are now identical regardless of mail SSL module
compiled in or not.

9 years agoModules compatibility: removed dependencies on NGX_STREAM_SSL.
Maxim Dounin [Mon, 10 Oct 2016 15:44:17 +0000 (18:44 +0300)]
Modules compatibility: removed dependencies on NGX_STREAM_SSL.

External structures are now identical regardless of stream SSL module
compiled in or not.

9 years agoModules compatibility: compatibility with NGX_HTTP_SSL.
Maxim Dounin [Mon, 10 Oct 2016 15:44:17 +0000 (18:44 +0300)]
Modules compatibility: compatibility with NGX_HTTP_SSL.

With this change it is now possible to load modules compiled without
the "--with-http_ssl_module" configure option into nginx binary compiled
with it, and vice versa (if a module doesn't use ssl-specific functions),
assuming both use the "--with-compat" option.

9 years agoModules compatibility: compatibility with NGX_HAVE_FILE_AIO.
Maxim Dounin [Mon, 10 Oct 2016 15:44:17 +0000 (18:44 +0300)]
Modules compatibility: compatibility with NGX_HAVE_FILE_AIO.

With this change it is now possible to load modules compiled without
the "--with-file-aio" configure option into nginx binary compiled with it,
and vice versa, assuming both use the "--with-compat" option.

9 years agoModules compatibility: compatibility with NGX_THREADS.
Maxim Dounin [Mon, 10 Oct 2016 15:44:17 +0000 (18:44 +0300)]
Modules compatibility: compatibility with NGX_THREADS.

With this change it is now possible to load modules compiled without
the "--with-threads" configure option into nginx binary compiled with it,
and vice versa (if a module does not use thread-specific functions),
assuming both use the "--with-compat" option.

9 years agoAllowed '-' in method names.
Maxim Dounin [Mon, 10 Oct 2016 13:24:50 +0000 (16:24 +0300)]
Allowed '-' in method names.

It is used at least by SOAP (M-POST method, defined by RFC 2774) and
by WebDAV versioning (VERSION-CONTROL and BASELINE-CONTROL methods,
defined by RFC 3253).

9 years agoCore: sockaddr lengths now respected by ngx_cmp_sockaddr().
Maxim Dounin [Mon, 10 Oct 2016 13:15:41 +0000 (16:15 +0300)]
Core: sockaddr lengths now respected by ngx_cmp_sockaddr().

Linux can return AF_UNIX sockaddrs with partially filled sun_path,
resulting in spurious comparison failures and failed binary upgrades.
Added proper checking of the lengths provided.

Reported by Jan Seda,
http://mailman.nginx.org/pipermail/nginx-devel/2016-September/008832.html.

9 years agoCore: ngx_conf_set_access_slot() user access (ticket #1096).
Maxim Dounin [Fri, 7 Oct 2016 13:59:14 +0000 (16:59 +0300)]
Core: ngx_conf_set_access_slot() user access (ticket #1096).

Previously, user access bits were always set to "rw" unconditionally,
even with "user:r" explicitly specified.  With this change we only add
default user access bits (0600) if they weren't set explicitly.

9 years agoRealip: fixed duplicate processing on redirects (ticket #1098).
Maxim Dounin [Thu, 6 Oct 2016 20:16:05 +0000 (23:16 +0300)]
Realip: fixed duplicate processing on redirects (ticket #1098).

Duplicate processing was possible if the address set by realip was
listed in set_realip_from, and there was an internal redirect so module
context was cleared.  This resulted in exactly the same address being set,
so this wasn't a problem before the $realip_remote_addr variable was
introduced, though now results in incorrect $realip_remote_addr being
picked.

Fix is to use ngx_http_realip_get_module_ctx() to look up module context
even if it was cleared.  Additionally, the order of checks was switched to
check the configuration first as it looks more effective.

9 years agoStream ssl_preread: fixed $ssl_preread_server_name variable.
Sergey Kandaurov [Wed, 5 Oct 2016 15:11:39 +0000 (18:11 +0300)]
Stream ssl_preread: fixed $ssl_preread_server_name variable.

Made sure to set the variable length only after successful SNI parsing.

9 years agoCache: cache manager limits.
Dmitry Volyntsev [Wed, 5 Oct 2016 11:22:30 +0000 (14:22 +0300)]
Cache: cache manager limits.

The new parameters "manager_files", "manager_sleep"
and "manager_threshold" were added to proxy_cache_path
and friends.

Note that ngx_path_manager_pt was changed to return ngx_msec_t
instead of time_t (API change).

9 years agoCore: use c->log while closing connection.
Ruslan Ermilov [Wed, 5 Oct 2016 10:57:43 +0000 (13:57 +0300)]
Core: use c->log while closing connection.

c->pool is not destroyed here since c52408583801.

9 years agoSSL: use X509_check_host() with LibreSSL.
Maxim Dounin [Tue, 4 Oct 2016 14:26:45 +0000 (17:26 +0300)]
SSL: use X509_check_host() with LibreSSL.

Explicit checks for OPENSSL_VERSION_NUMBER replaced with checks
for X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT, thus allowing X509_check_host()
to be used with other libraries.  In particular, X509_check_host() was
introduced in LibreSSL 2.5.0.

9 years agoConfigure: removed the --with-ipv6 option.
Maxim Dounin [Tue, 4 Oct 2016 13:38:14 +0000 (16:38 +0300)]
Configure: removed the --with-ipv6 option.

IPv6 now compiled-in automatically if support is found.  If there is a need
to disable it for some reason, --with-cc-opt="-DNGX_HAVE_INET6=0" can be used
for this.

9 years agoAddition filter: set last_in_chain flag when clearing last_buf.
Roman Arutyunyan [Mon, 3 Oct 2016 18:03:27 +0000 (21:03 +0300)]
Addition filter: set last_in_chain flag when clearing last_buf.

When the last_buf flag is cleared for add_after_body to append more data from a
subrequest, other filters may still have buffered data, which should be flushed
at this point.  For example, the sub_filter may have a partial match buffered,
which will only be flushed after the subrequest is done, ending up with
interleaved data in output.

Setting last_in_chain instead of last_buf flushes the data and fixes the order
of output buffers.

9 years agoDo not set last_buf flag in subrequests.
Roman Arutyunyan [Mon, 3 Oct 2016 17:48:51 +0000 (20:48 +0300)]
Do not set last_buf flag in subrequests.

The last_buf flag should only be set in the last buffer of the main request.
Otherwise, several last_buf flags can appear in output.  This can, for example,
break the chunked filter, which will include several final chunks in output.

9 years agoModules compatibility: removed two NGX_HAVE_DEFERRED_ACCEPT checks.
Ruslan Ermilov [Mon, 3 Oct 2016 12:58:30 +0000 (15:58 +0300)]
Modules compatibility: removed two NGX_HAVE_DEFERRED_ACCEPT checks.

Removed (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
from the signature accordingly.

9 years agoModules compatibility: removed unneeded NGX_HAVE_REUSEPORT checks.
Maxim Dounin [Mon, 3 Oct 2016 12:58:29 +0000 (15:58 +0300)]
Modules compatibility: removed unneeded NGX_HAVE_REUSEPORT checks.

Removed NGX_HAVE_REUSEPORT from the signature accordingly.

9 years agoModules compatibility: removed unneeded IPV6_V6ONLY checks.
Maxim Dounin [Mon, 3 Oct 2016 12:58:25 +0000 (15:58 +0300)]
Modules compatibility: removed unneeded IPV6_V6ONLY checks.

The IPV6_V6ONLY macro is now checked only while parsing appropriate flag
and when using the macro.

The ipv6only field in listen structures is always initialized to 1,
even if not supported on a given platform.  This is expected to prevent
a module compiled without IPV6_V6ONLY from accidentally creating dual
sockets if loaded into main binary with proper IPV6_V6ONLY support.

9 years agoModules compatibility: http2.
Maxim Dounin [Mon, 3 Oct 2016 12:58:22 +0000 (15:58 +0300)]
Modules compatibility: http2.

HTTP/2-specific fields in structures are now available unconditionally.
Removed NGX_HTTP_V2 from the signature accordingly.

9 years agoModules compatibility: degradation fields now always present.
Maxim Dounin [Mon, 3 Oct 2016 12:58:19 +0000 (15:58 +0300)]
Modules compatibility: degradation fields now always present.

There is no need to save these two bits as they are wasted anyway.
Removed NGX_HTTP_DEGRADATION from the signature accordingly.

9 years agoModules compatibility: --with-compat configure option.
Maxim Dounin [Mon, 3 Oct 2016 12:58:16 +0000 (15:58 +0300)]
Modules compatibility: --with-compat configure option.

9 years agoIntroduced the NGX_COMPAT macro.
Ruslan Ermilov [Thu, 29 Sep 2016 12:28:24 +0000 (15:28 +0300)]
Introduced the NGX_COMPAT macro.

When enabled, some structures are padded to be size compatible
with their NGINX Plus versions.

9 years agoResolver: introduced state field in ngx_resolver_srv_name_t.
Dmitry Volyntsev [Thu, 29 Sep 2016 16:40:47 +0000 (19:40 +0300)]
Resolver: introduced state field in ngx_resolver_srv_name_t.

It keeps the actual state value of a DNS SRV subrequest
and can be used to report a more detailed log for
failed SRV records.

9 years agoModules compatibility: down flag promoted to a bitmask.
Maxim Dounin [Thu, 29 Sep 2016 15:06:05 +0000 (18:06 +0300)]
Modules compatibility: down flag promoted to a bitmask.

It is to be used as a bitmask with various bits set/reset when appropriate.
Any bit set means that the peer should not be used, that is, exactly what
current checks do, no additional changes required.

9 years agoModules compatibility: upstream config field.
Maxim Dounin [Thu, 29 Sep 2016 15:06:04 +0000 (18:06 +0300)]
Modules compatibility: upstream config field.

It is to be used to track version of an upstream configuration used for
request processing.

9 years agoModules compatibility: status fields.
Maxim Dounin [Thu, 29 Sep 2016 15:06:03 +0000 (18:06 +0300)]
Modules compatibility: status fields.

9 years agoModules compatibility: health check fields.
Maxim Dounin [Thu, 29 Sep 2016 15:06:02 +0000 (18:06 +0300)]
Modules compatibility: health check fields.

9 years agoModules compatibility: cache purge fields.
Maxim Dounin [Thu, 29 Sep 2016 15:06:01 +0000 (18:06 +0300)]
Modules compatibility: cache purge fields.

9 years agoModules compatibility: slow start fields.
Maxim Dounin [Thu, 29 Sep 2016 15:06:00 +0000 (18:06 +0300)]
Modules compatibility: slow start fields.

9 years agoModules compatibility: peer.notify.
Maxim Dounin [Thu, 29 Sep 2016 15:05:59 +0000 (18:05 +0300)]
Modules compatibility: peer.notify.

This callback can be used to notify balancer about various events.
For now, it is only used in nginx-plus.

9 years agoStream: style.
Ruslan Ermilov [Thu, 29 Sep 2016 09:59:13 +0000 (12:59 +0300)]
Stream: style.

Explicitly initialized peer's max_conns for upstreams created with
variables similar to how it's done in http.

9 years agoUpstream: max_conns.
Ruslan Ermilov [Thu, 22 Sep 2016 16:32:47 +0000 (19:32 +0300)]
Upstream: max_conns.

9 years agoUpstream: removed the quick recovery mechanism.
Ruslan Ermilov [Thu, 22 Sep 2016 16:32:45 +0000 (19:32 +0300)]
Upstream: removed the quick recovery mechanism.

Its usefulness it questionable, and it interacts badly with max_conns.

9 years agoUpstream: introduced u->upstream.
Maxim Dounin [Thu, 22 Sep 2016 16:32:26 +0000 (19:32 +0300)]
Upstream: introduced u->upstream.

It holds upstream{} block configuration, including ones selected via
run-time lookup using variables.

9 years agoUpstream: style.
Maxim Dounin [Thu, 22 Sep 2016 16:31:08 +0000 (19:31 +0300)]
Upstream: style.

9 years agoUpstream: style, ngx_http_upstream_rr_peer_t.next moved.
Maxim Dounin [Mon, 25 Jul 2016 13:23:35 +0000 (16:23 +0300)]
Upstream: style, ngx_http_upstream_rr_peer_t.next moved.

9 years agoPerl: pass additional linker options to perl module.
Konstantin Pavlov [Tue, 20 Sep 2016 19:11:23 +0000 (22:11 +0300)]
Perl: pass additional linker options to perl module.

Previously flags passed by --with-ld-opt were not used when building perl
module, which meant hardening flags provided by package build systems were not
applied.

9 years agoFixed log levels of configuration parsing errors.
Valentin Bartenev [Tue, 20 Sep 2016 12:07:16 +0000 (15:07 +0300)]
Fixed log levels of configuration parsing errors.

All the errors that prevent loading configuration must be printed on the "emerg"
log level.  Previously, nginx might silently fail to load configuration in some
cases as the default log level is "error".

9 years agoRemoved influence of some options on structures.
Ruslan Ermilov [Tue, 20 Sep 2016 09:30:52 +0000 (12:30 +0300)]
Removed influence of some options on structures.

9 years agoUpstream hash: fixed missing upstream name initialization.
Vladimir Homutov [Fri, 16 Sep 2016 12:13:24 +0000 (15:13 +0300)]
Upstream hash: fixed missing upstream name initialization.

9 years agoStream ssl_preread: removed internal macro.
Vladimir Homutov [Thu, 15 Sep 2016 12:36:02 +0000 (15:36 +0300)]
Stream ssl_preread: removed internal macro.

The ngx_log_debug() macro is internal and should not be used.

9 years agoStream: ssl_preread module.
Vladimir Homutov [Thu, 15 Sep 2016 11:56:51 +0000 (14:56 +0300)]
Stream: ssl_preread module.

The ssl_preread module extracts information from the SSL Client Hello message
without terminating SSL.  Currently, only $ssl_preread_server_name variable
is supported, which contains server name from the SNI extension.

9 years agoStream: preread phase.
Vladimir Homutov [Thu, 15 Sep 2016 11:56:02 +0000 (14:56 +0300)]
Stream: preread phase.

In this phase, head of a stream is read and analysed before proceeding to the
content phase.  Amount of data read is controlled by the module implementing
the phase, but not more than defined by the "preread_buffer_size" directive.
The time spent on processing preread is controlled by the "preread_timeout"
directive.

The typical preread phase module will parse the beginning of a stream and set
variable that may be used by the content phase, for example to make routing
decision.

9 years agoStream: phases.
Roman Arutyunyan [Thu, 15 Sep 2016 11:55:54 +0000 (14:55 +0300)]
Stream: phases.

9 years agoStream: filters.
Roman Arutyunyan [Thu, 15 Sep 2016 11:55:46 +0000 (14:55 +0300)]
Stream: filters.

9 years agoVersion bump.
Vladimir Homutov [Thu, 15 Sep 2016 11:56:26 +0000 (14:56 +0300)]
Version bump.

9 years agorelease-1.11.4 tag
Maxim Dounin [Tue, 13 Sep 2016 15:39:24 +0000 (18:39 +0300)]
release-1.11.4 tag

9 years agonginx-1.11.4-RELEASE release-1.11.4
Maxim Dounin [Tue, 13 Sep 2016 15:39:23 +0000 (18:39 +0300)]
nginx-1.11.4-RELEASE

9 years agoOCSP stapling: fixed using wrong responder with multiple certs.
Maxim Dounin [Mon, 12 Sep 2016 17:11:06 +0000 (20:11 +0300)]
OCSP stapling: fixed using wrong responder with multiple certs.