IPv6 related fixes:
*) fix IPv6 listen socket handling while reconfiguring
*) test wildcard tail hash existance for IPv6 addresses,
the same fix for IPv4 addresses has been made in r2581
*) always run regex in server_name to get captures for IPv6 addresses,
the same fix for IPv4 addresses has been made in r2584
*) MSVC8 compatibility with OpenSSL 1.0.0
*) fix building OpenSSL-1.0.0 on 64-bit Linux:
make installs the libraries in lib64 directory
and build nginx/Windows against OpenSSL-0.9.8n
signal processing stability:
*) use sys_errlist[] in signal handler instead
of non Async-Signal-Safe strerror_r()
*) do not update time in the timer signal handler,
since localtime_r() is not Async-Signal-Safe function
*) use previously cached GMT offset value to update time from a signal handler
*) change ngx_time_update() interface since there are no notification methods
those return time
*) introduce ngx_time_sigsafe_update() to update the error log time only
*) change ngx_time_update() interface
*) make $request_method non-cacheable
*) make $arg_ variables non-cacheable
*) change processing variables accessed by SSI and perl module:
*) the indexed variables are always flushed
*) never show warning for not found variables
SSL fixes:
*) decrease SSL handshake error level to info
*) Set SSL session context for "ssl_session_cache none".
This fixes a bug when client certficate is used and nginx closes connection
with the message: "SSL_GET_PREV_SESSION:session id context uninitialized".
*) add OpenSSL_add_all_algorithms(), this fixes the error
"ASN1_item_verify:unknown message digest algorithm" occurred if
client certificate is signed using sha256WithRSAEncryption
SSI fixes:
*) use content type of the parent request in SSI stub block output
instead of default one
*) SSI %s timefmt has no timezone offset
*) change ngx_http_ssi_filter and ngx_http_charset_filter order
*) do not store an encoded variable value as a new cached variable value
*) fix SSI include stub for valid empty responses
*) allow to use $uid_got in SSI and perl module
fix miscellaneous name bugs:
*) fix $upstream_http_ variable prefix length
*) use a right "Location" header name, however, it did not harm,
since ngx_http_variable_sent_location() never use key name field
*) fix proxy_redirect name in error message
*) "proxy_redirect default" may not be used if a proxy_pass uses variables
browsers related fixes:
*) add MSIE padding for Chrome too
*) disable keepalive for Safari:
https://bugs.webkit.org/show_bug.cgi?id=5760
*) do not disable keepalive after POST requests for MSIE 7+
gzip headers related fixes:
*) remove "Content-Encoding: gzip" in 304 response
sent by ngx_http_gzip_static_module
*) refactor gzip_vary handling
*) test r->header_only last, since it's not actually
frequent here: 304 and HEAD responses are not set it before the filter
Fix a bug introduced in r2032: After a child process has read a terminate
message from a channel, the process tries to read the channel again.
The kernel (at least FreeBSD) may preempt the process and sends a SIGIO
signal to a master process. The master process sends a new terminate message,
the kernel switches again to the the child process, and the child process
reads the messages instead of an EAGAIN error. And this may repeat over
and over. Being that the child process can not exit the cycle and test
the termination flag set by the message handler.
The fix disallow the master process to send a new terminate message on
SIGIO signal reception. It may send the message only on SIGALARM signal.
cache related fixes:
*) do not pass buf with empty cached response,
this fixes "zero size buf in output" alert
*) hide cacheable Set-Cookie and P3P FastCGI response headers
*) test comma separator in "Cache-Control"
*) a cache manager thread handle was overwritten by a cache loader thread
handle, this caused an exit delay, the bug had been introduced in r3248
*) fix handling cached HTTP/0.9 response
*) log proxied HTTP/0.9 responses status as "009"
*) fix the "If-None-Match" header name
*) fix a cached zero-length body case
r3202, r3203, r3383, r3388, r3417, r3418:
Win32 (mostly) and some Unix file related fixes:
*) preserve errno while ngx_free()
*) win32 ngx_file_info() utf8 support
*) delete Win95 code
*) log file name for read/write errors
*) test incomplete WriteFile()
*) handle short pwrite() to log an error cause: ENOSPC, EDQUOT, or EFBIG
*) uniform ngx_directio_on/off() interface with other file functions
*) do not create Win32 drive letter in ngx_create_full_path()
*) ignore EACCES errors for top level directories in ngx_create_full_path()
*) fix Win32 error messages when an temporary file replaces an existent file:
*) do not rename an already renamed file
*) now ngx_win32_rename_file() returns error code
*) do not log failure inside ngx_win32_rename_file()
*) fix Win32 error message when an temporary file replaces an existent file:
return at once if ngx_win32_rename_file() was not failed
and do not try to delete already the renamed temporary file
*) skip URI trailing spaces under Win32
*) disable Win32 short file names
ngx_http_parse_time() fixes:
*) use ngx_uint_t instead of int,
strange to say this reduce function size by 16 bytes
*) ngx_http_parse_time() should support full 32-bit time
ngx_http_autoindex_module fixes:
*) reset cached dirent.d_type after stat()
this fixes slash after link to a directory in ngx_http_autoindex_module;
*) use cached dirent.d_type as hint on all systems
the issues has been introduced in r2235
*) fix ngx_utf8_cpystrn(): it did not fully copy utf-8 string
SSL fixes:
*) $ssl_session_id
*) allow "make clean" for OpenSSL, the bug was introduced in r2874
*) disable SSLv2 and use only strong ciphers by default
*) decrease SSL handshake error level to info