Igor Sysoev [Mon, 7 Jun 2010 09:54:19 +0000 (09:54 +0000)]
merge r3454, r3455, r3486, r3496, r3519, r3523:
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
Igor Sysoev [Mon, 7 Jun 2010 09:36:33 +0000 (09:36 +0000)]
merge r3452, r3462, r3471, r3472:
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
Igor Sysoev [Fri, 4 Jun 2010 17:47:04 +0000 (17:47 +0000)]
merge r3316, r3317, r3420, r3421, r3453:
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+
Igor Sysoev [Mon, 1 Feb 2010 15:54:02 +0000 (15:54 +0000)]
merge r3309, r3314, r3315, r3380:
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
Igor Sysoev [Mon, 1 Feb 2010 15:49:36 +0000 (15:49 +0000)]
merge r3294, r3305:
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.
*) 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
*) 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
Igor Sysoev [Mon, 1 Feb 2010 14:52:25 +0000 (14:52 +0000)]
merge r3201, r3204, r3411:
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_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
Igor Sysoev [Mon, 1 Feb 2010 14:16:45 +0000 (14:16 +0000)]
merge r3153, r3154, r3288, r3382:
request header processing fixes:
*) $host is always in low case:
*) move low case convertation from ngx_http_find_virtual_server()
to ngx_http_validate_host()
*) add in ngx_http_validate_host() capability to copy host name in the pool
allocated memory
*) fix segfault if there is single large_client_header_buffers
and a request line fills it completely
*) default large_client_header_buffers' buffer size should be 8K as compatible
with Apache's one
Igor Sysoev [Mon, 1 Feb 2010 14:04:20 +0000 (14:04 +0000)]
merge r3039, r3145:
access_log fixes:
*) strict testing "access_log off"
*) allow to log invalid $request in access_log always,
before it was logged only if error_log was set to info or debug level
Igor Sysoev [Mon, 1 Feb 2010 14:01:24 +0000 (14:01 +0000)]
merge r2990, r3324, r3384, r3419:
various proxy/FastCGI fixes:
*) do auto redirect for proxy_pass/fastcgi_pass with variables
*) allow "proxy_pass http://$backend" without URI part
*) add conf/fastcgi.conf
*) delete u->cleanup mark, this fixes large values in $upstream_response_time,
the bug had been introduced in r3246
*) fix memory leak in resolver
*) fix resolver cache rbtree comparison
*) fix segfault in resolver:
ngx_resolve_name_done() and ngx_resolve_addr_done() did not delete
contexts from a resolver node waiting list.
*) fix "PTR ." case in address resolver
*) add quotes in an error message,
*) fix resolving an empty name (".")
*) use ngx_resolver_alloc() instead of ngx_resolver_calloc()
since all fields are filled
Igor Sysoev [Mon, 16 Nov 2009 15:00:13 +0000 (15:00 +0000)]
r3117, r3123, r3229 merge:
server name related merges:
*) If .domain.com, .sub.domain.com, and .domain-some.com were defined,
then .sub.domain.com was matched by .domain.com: wildcard names hash
was built incorrectly due to sorting order issue of "." vs "-".
They were sorted as
com.domain com.domain-some com.domain.sub
while they should be sorted as
com.domain com.domain.sub com.domain-some
for correct hash building
*) test space between "~" and regex in server_name and invalid_referers
*) do not run regex for empty host name since regex always fails in this case,
the bug had been introduced in r2196
Igor Sysoev [Mon, 26 Oct 2009 17:34:43 +0000 (17:34 +0000)]
merge r3055, r3136:
gzip related fixes:
*) do not disable gzip for MSIE 6.0 SV1 in "gzip_disable msie6"
*) nginx always sent "Vary: Accept-Encoding",
if both gzip_static and gzip_vary were on
*) separate cache loader process
*) use real file cache length, this fixes cache size counting for responses
without "Content-Length" header and 304 responses.
Igor Sysoev [Mon, 26 Oct 2009 17:13:44 +0000 (17:13 +0000)]
merge r3004, r3005, r3006:
various header fixes:
*) allow to proxy_pass_header/fastcgi_pass_header "X-Accel-Redirect",
"X-Accel-Limit-Rate", "X-Accel-Buffering", and "X-Accel-Charset"
*) fix handling "Last-Modified" and "Accept-Ranges" for upstream responses
*) clear "Accept-Ranges" for SSI responses
*) $ssl_client_verify
*) "ssl_verify_client ask" was changed to "ssl_verify_client optional"
*) ssl_crl
*) delete OpenSSL pre-0.9.7 compatibility: the sources were not actually
compatible with OpenSSL 0.9.6 since ssl_session_cache introduction
*) fix memory corruption in $ssl_client_cert
*) issue SNI warning instead of failure: this is too common case
*) use ngx_log_error(), since OpenSSL does not set an error on the failure
*) add SNI support in -V output
Igor Sysoev [Mon, 26 Oct 2009 16:30:34 +0000 (16:30 +0000)]
merge r2973, r2974, r3184, r3192, r3186, r3187:
various limit_req and limit_conn fixes:
*) fix client write event handling in ngx_http_limit_req_module
*) make limit_req to conform to the leaky bucket algorithm
*) limit_req_log_level
*) limit_conn_log_level
*) fix ngx_http_send_special() for subrequests handled by perl
*) allow perl "sub{..."
*) restore environ, this fixes segfault on reconfiguration failure when
perl module creates new environment
*) optimize error handling
*) use ngx_conf_set_str_array_slot() for perl_require
*) allow several perl_modules
Igor Sysoev [Mon, 7 Sep 2009 10:12:49 +0000 (10:12 +0000)]
merge r3011, r3012, r3026:
FastCGI fixes:
*) continue to parse available fastcgi record after a split header,
this fixes the erroneous message "upstream prematurely closed connection
while reading response header from upstream"
*) fix a garbage in a split fastcgi header
*) refactor fastcgi stderr handling
Igor Sysoev [Mon, 7 Sep 2009 10:01:26 +0000 (10:01 +0000)]
merge r2980, r2981, r2982:
win32 fixes:
*) ngx_http_set_exten() is always successful since 0.3.46
*) skip URI trailing dots under Win32
*) use caseless regex locations on caseless filesystems: MacOSX, Win32, Cygwin
*) use no-threads for Unix builds only
*) Win32 returns ERROR_PATH_NOT_FOUND instead of ERROR_FILE_NOT_FOUND
*) add trailing zero to a file name in ngx_win32_rename_file()
*) fix logging in ngx_win32_rename_file()
*) allow shared memory segments more than 4G
*) fix memory leak in successful case
*) log shared memory name in failure case
*) test that zone has the same addresses in different processes
*) add drive letter for Win32 root path
*) log GetExitCodeProcess()'s errno
*) test premature process termination
*) fix debug logging
*) exit if no workers could not be started
*) do not quit old workers if no new workers could not be started
*) a signaller process should stop configuration processing just after
it is able to get pid file, this allows to not open log files, etc.
*) win32 master process had aready closed listening sockets
Igor Sysoev [Mon, 15 Jun 2009 09:30:59 +0000 (09:30 +0000)]
merge r2895, r2896, r2926, r2927, r2928, r2930, and r2936:
various proxy/fastcgi cache features and fixes:
*) report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
*) delete useless r->cache->uses
*) proxy_cache_use_stale/fastcgi_cache_use_stale updating
*) inherit proxy_set_header, proxy_hide_header, and fastcgi_hide_header
only if cache settings are similar
*) add response file uniq while loading cold cache on demand
Igor Sysoev [Mon, 15 Jun 2009 08:49:53 +0000 (08:49 +0000)]
merge r2893, r2894, and r2917:
various ./configure fixes:
*) use md5/sha1 in OpenSSL only if OpenSSL is used
*) stop ./configure at once on library failure
*) librt must be tested before creating Makefile
the bug has been introduced in r2817
Igor Sysoev [Mon, 15 Jun 2009 08:43:10 +0000 (08:43 +0000)]
merge r2889, r2918, and r2921:
fix a pool growing and CPU usage for multi-requests keepalive connections:
*) keepalive_requests
*) try to reuse last 4 free large allocation links
*) do not test a pool block space if we can not allocated from
the block 4 times