nginx-1.7.3-RELEASE
release-1.7.3 tag
Version bump.
SSL: include correct OpenSSL headers.

Previously, <bn.h>, <dh.h>, <rand.h> and <rsa.h> were pulled in
by <engine.h> using OpenSSL's deprecated interface, which meant
that nginx couldn't have been built with -DOPENSSL_NO_DEPRECATED.

Both <x509.h> and <x509v3.h> are pulled in by <ocsp.h>, but we're
calling X509 functions directly, so let's include those as well.

<crypto.h> is pulled in by virtually everything, but we're calling
CRYPTO_add() directly, so let's include it as well.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
SSL: return temporary RSA key only when the key length matches.

This change is mostly cosmetic, because in practice this callback
is used only for 512-bit RSA keys.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
SSL: fixed build with OPENSSL_NO_DEPRECATED defined.

The RSA_generate_key() is marked as deprecated and causes build to
fail.  On the other hand, replacement function, RSA_generate_key_ex(),
requires much more code.  Since RSA_generate_key() is only needed
for barely usable EXP ciphers, the #ifdef was added instead.

Prodded by Piotr Sikora.
SSL: stop accessing SSL_SESSION's fields directly.

SSL_SESSION struct is internal part of the OpenSSL library and it's fields
should be accessed via API (when exposed), not directly.

The unfortunate side-effect of this change is that we're losing reference
count that used to be printed at the debug log level, but this seems to be
an acceptable trade-off.

Almost fixes build with -DOPENSSL_NO_SSL_INTERN.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
Style: add whitespace between control statement and parentheses.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
Style: remove whitespace between function name and parentheses.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
Style: keep return type and function name on different lines.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
Style: use ngx_memcpy() instead of memcpy().

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
Style: fix typo.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
SPDY: fix support for headers with multiple values.

Split SPDY header with multiple, NULL-separated values:

    cookie: foo\0bar

into two separate HTTP headers with the same name:

    cookie: foo
    cookie: bar

Even though the logic for this behavior already existed
in the source code, it doesn't look that it ever worked
and SPDY streams with such headers were simply rejected.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
Style: use ngx_strlen() instead of strlen().
Style: use ngx_str_null().
Style: use ngx_str_set().
Core: bugfix for the ngx_slab_max_size case.