aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* Fix of cpu hog in event pipe.Maxim Dounin2011-09-20
| | | | | | | | | | | | | If client closed connection in ngx_event_pipe_write_to_downstream(), buffers in the "out" chain were lost. This caused cpu hog if all available buffers were in the "out" chain. Fix is to call ngx_chain_update_chains() before checking return code of output filter to avoid loosing buffers in the "out" chain. Note that this situation (all available buffers in the "out" chain) isn't normal, it should be prevented by busy buffers limit. Though right now it may happen with complex protocols like fastcgi. This should be addressed separately.
* The "worker_aio_requests" directive.Igor Sysoev2011-09-20
| | | | | | | | | The default value is 32 AIO simultaneous requests per worker. Previously they were hardcoded to 1024, and it was too large, since Linux allocated them early on io_setup(), but not on request itself. So with default value of /proc/sys/fs/aio-max-nr equal to 65536 only 64 worker processes could be run simultaneously. 32 AIO requests are enough for modern disks even if server runs only 1 worker.
* Replaced "can not" with "cannot" and "could not" in a bunch of places.Ruslan Ermilov2011-09-19
| | | | Fixed nearby grammar errors.
* Cosmetics: replaced NGX_CONF_TAKE1 to NGX_CONF_FLAG for "sendfile"Ruslan Ermilov2011-09-19
| | | | | | and "chunked_transfer_encoding" directives, to be in line with all directives taking a boolean argument. Both flags will ensure that a directive takes one argument.
* Overhauled diagnostic messages.Ruslan Ermilov2011-09-19
|
* Fixing Linux AIO initiatialization: AIO operations are disabled if kernelIgor Sysoev2011-09-16
| | | | does not support them. Previously worker just exited.
* Fixing Linux AIO syscalls return value handling:Igor Sysoev2011-09-16
| | | | | | | syscall(2) uses usual libc convention, it returns -1 on error and sets errno. Obsolete _syscall(2) returns negative value of error. Thanks to Hagai Avrahami.
* Trailing space fix.Maxim Dounin2011-09-16
|
* Upstream keepalive module.Maxim Dounin2011-09-15
|
* Proxy: basic HTTP/1.1 support (including keepalive).Maxim Dounin2011-09-15
| | | | | By default we still send requests using HTTP/1.0. This may be changed with new proxy_http_version directive.
* Protocol version parsing in ngx_http_parse_status_line().Maxim Dounin2011-09-15
| | | | | Once we know protocol version, set u->headers_in.connection_close to indicate implicitly assumed connection close with HTTP before 1.1.
* Upstream: Connection header processing.Maxim Dounin2011-09-15
|
* Upstream: Transfer-Encoding header processing.Maxim Dounin2011-09-15
|
* Keepalive support in fastcgi.Maxim Dounin2011-09-15
| | | | | | By default follow the old behaviour, i.e. FASTCGI_KEEP_CONN flag isn't set in request and application is responsible for closing connection once request is done. To keep connections alive fastcgi_keep_conn must be activated.
* Keepalive support in memcached.Maxim Dounin2011-09-15
|
* Upstream: keepalive flag.Maxim Dounin2011-09-15
| | | | | This patch introduces r->upstream->keepalive flag, which is set by protocol handlers if connection to upstream is in good state and can be kept alive.
* Upstream: pipe length and input_filter_init in buffered mode.Maxim Dounin2011-09-15
| | | | | | | | | | | | As long as ngx_event_pipe() has more data read from upstream than specified in p->length it's passed to input filter even if buffer isn't yet full. This allows to process data with known length without relying on connection close to signal data end. By default p->length is set to -1 in upstream module, i.e. end of data is indicated by connection close. To set it from per-protocol handlers upstream input_filter_init() now called in buffered mode (as well as in unbuffered mode).
* Upstream: r->upstream->length type change to off_t.Maxim Dounin2011-09-15
| | | | | | | | | Previous use of size_t may cause wierd effects on 32bit platforms with certain big responses transferred in unbuffered mode. Nuke "if (size > u->length)" check as it's not usefull anyway (preread body data isn't subject to this check) and now requires additional check for u->length being positive.
* Upstream: content_length_n API change.Maxim Dounin2011-09-15
| | | | | | | We no longer use r->headers_out.content_length_n as a primary source of backend's response length. Instead we parse response length to u->headers_in.content_length_n and copy to r->headers_out.content_length_n when needed.
* Upstream: separate pool for peer connections.Maxim Dounin2011-09-15
| | | | | This is required to support persistent https connections as various ssl structures are allocated from connection's pool.
* Workaround for cpu hog on errors with cached connections.Maxim Dounin2011-09-15
| | | | | | | | | | | Just doing another connect isn't safe as peer.get() may expect peer.tries to be strictly positive (this is the case e.g. with round robin with multiple upstream servers). Increment peer.tries to at least avoid cpu hog in round robin balancer (with the patch alert will be seen instead). This is not enough to fully address the problem though, hence TODO. We should be able to inform balancer that the error wasn't considered fatal and it may make sense to retry the same peer.
* API change: ngx_chain_update_chains() now requires pool.Maxim Dounin2011-09-15
| | | | | | The ngx_chain_update_chains() needs pool to free chain links used for buffers with non-matching tags. Providing one helps to reduce memory consumption for long-lived requests.
* Buffers reuse in chunked filter.Maxim Dounin2011-09-15
| | | | | | | | | | | | | | | There were 2 buffers allocated on each buffer chain sent through chunked filter (one buffer for chunk size, another one for trailing CRLF, about 120 bytes in total on 32-bit platforms). This resulted in large memory consumption with long-lived requests sending many buffer chains. Usual example of problematic scenario is streaming though proxy with proxy_buffering set to off. Introduced buffers reuse reduces memory consumption in the above problematic scenario. See here for initial report: http://mailman.nginx.org/pipermail/nginx/2010-April/019814.html
* MP4 co64 atom support added.Igor Sysoev2011-09-15
|
* Fix of struct field name.Igor Sysoev2011-09-15
|
* Style fix.Igor Sysoev2011-09-14
|
* Fixing building by gcc-4.7.Igor Sysoev2011-09-14
|
* Version bump.Igor Sysoev2011-09-14
|
* Fix of the previous commit: is_directio flag processing introduced in r4077Igor Sysoev2011-09-14
| | | | is still worthwhile.
* Bugfix: open_file_cache did not update file info on retest.Igor Sysoev2011-09-14
| | | | | | | | | If file inode was not changed, cached file information was not updated on retest. As a result stale information might be cached forever if file attributes was changed and/or file was extended. This fix also makes obsolete r4077 change of is_directio flag handling, since this flag is updated together with other file information.
* Skipping traks with unsupported media formats.Igor Sysoev2011-09-14
|
* Fix of case when start sample does not reside on chunk boundary.Igor Sysoev2011-09-14
|
* In Mac OS X Lion, Apple deprecated the use of the system OpenSSL libraryRuslan Ermilov2011-09-13
| | | | | in favour of their CommonCrypto library. This change adds a work-around that allows nginx to still be built on Lion with OpenSSL.
* Fix of debug message format.Igor Sysoev2011-09-12
|
* Fix of codec debug message.Igor Sysoev2011-09-12
|
* Fix of error message.Igor Sysoev2011-09-12
|
* Fix of error message.Igor Sysoev2011-09-12
|
* mp4_max_moov_size directive has been renamed to mp4_max_buffer_size.Igor Sysoev2011-09-12
|
* bugfix of r4086: nginx could not be built without debug log.Igor Sysoev2011-09-09
|
* Bugfix of r4086: directio was always enabled if mp4 file was sent as is.Igor Sysoev2011-09-09
|
* ngx_http_mp4_moduleIgor Sysoev2011-09-09
|
* Bugfix: open_file_cache lost is_directio flag.Maxim Dounin2011-09-05
| | | | | | On file retest open_file_cache lost is_directio if file wasn't changed. This caused unaligned operations under Linux to fail with EINVAL. It wasn't noticeable with AIO though, as errors wasn't properly logged.
* Version bump.Igor Sysoev2011-09-05
|
* Bugfix: read event was not blocked after reading body.Maxim Dounin2011-09-05
| | | | | | Read event should be blocked after reading body, else undefined behaviour might occur on additional client activity. This fixes segmentation faults observed with proxy_ignore_client_abort set.
* Proper setting of read->eof in pipe code.Maxim Dounin2011-09-01
| | | | | | | | | | | Setting read->eof to 0 seems to be just a typo. It appeared in nginx-0.0.1-2003-10-28-18:45:41 import (r164), while identical code in ngx_recv.c introduced in the same import do actually set read->eof to 1. Failure to set read->eof to 1 results in EOF not being generally detectable from connection flags. On the other hand, kqueue won't report any read events on such a connection since we use EV_CLEAR. This resulted in read timeouts if such connection was cached and used for another request.
* Proper SSL shutdown handling.Maxim Dounin2011-09-01
| | | | | | | If connection has unsent alerts, SSL_shutdown() tries to send them even if SSL_set_shutdown(SSL_RECEIVED_SHUTDOWN|SSL_SENT_SHUTDOWN) was used. This can be prevented by SSL_set_quiet_shutdown(). SSL_set_shutdown() is required nevertheless to preserve session.
* Now if client requests more ranges than "max_ranges" permits,Igor Sysoev2011-09-01
| | | | nginx disables ranges and returns just the source response.
* The "max_ranges" directive.Igor Sysoev2011-08-31
| | | | | | "max_ranges 0" disables ranges support at all, "max_ranges 1" allows the single range, etc. By default number of ranges is unlimited, to be precise, 2^31-1.
* Style fix: removal of tabs introduced in the previous commit.Igor Sysoev2011-08-31
|
* *) fix of r4060: start value should be tested after the "found" label;Igor Sysoev2011-08-30
| | | | | *) optimization: start value may be tested against end value only, since end value here may not be greater than content_length.