aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* Events: backout eventport changes (r5172) for now.Maxim Dounin2013-04-16
| | | | | Evenport method needs more work. Changes in r5172, while being correct, introduce various new regressions with current code.
* Request body: only read body in main request (ticket #330).Maxim Dounin2013-04-16
| | | | | | | | | | Before 1.3.9 an attempt to read body in a subrequest only caused problems if body wasn't already read or discarded in a main request. Starting with 1.3.9 it might also cause problems if body was discarded by a main request before subrequest start. Fix is to just ignore attempts to read request body in a subrequest, which looks like right thing to do anyway.
* Upstream: warn if multiple non-stackable balancers are installed.Ruslan Ermilov2013-04-12
|
* Events: fixed typos in two previous commits.Valentin Bartenev2013-04-12
|
* Events: handle only active events in eventport.Valentin Bartenev2013-04-12
| | | | | | We generate both read and write events if an error event was returned by port_getn() without POLLIN/POLLOUT, but we should not try to handle inactive events, they may even have no handler.
* Events: protection from stale events in eventport and devpoll.Valentin Bartenev2013-04-12
| | | | | | | | | | | Stale write event may happen if read and write events was reported both, and processing of the read event closed descriptor. In practice this might result in "sendfilev() failed (134: ..." or "writev() failed (134: ..." errors when switching to next upstream server. See report here: http://mailman.nginx.org/pipermail/nginx/2013-April/038421.html
* Upstream: fixed $upstream_response_length without buffering.Sergey Kandaurov2013-04-11
| | | | Reported by Piotr Sikora.
* Configure: fixed nginx.so rebuild (broken by r5145).Maxim Dounin2013-04-10
| | | | | | | To avoid further breaks it's now done properly, all the dependencies are now passed to Makefile.PL. While here, fixed include list passed to Makefile.PL to use Makefile variables rather than a list expanded during configure.
* Upstream: removed surplus ngx_resolve_name_done() call.Valentin Bartenev2013-04-04
| | | | It will be called in ngx_http_upstream_finalize_request().
* Limit req: rate should be non-zero.Valentin Bartenev2013-04-03
| | | | Specifying zero rate caused division by zero when calculating delays.
* Pass PCRE_CASELESS to pcre_compile() for caseless matching.Ruslan Ermilov2013-03-29
| | | | | Previously, we sometimes passed constant value 1 that happens to match PCRE_CASELESS and thus was harmless.
* Simplified nginx version maintenance.Ruslan Ermilov2013-03-28
| | | | | It's no longer necessary to update src/http/modules/perl/nginx.pm when version is bumped, as it's now derived from src/core/nginx.h.
* Upstream: fixed tcp_nodelay with connection upgrade (ticket #325).Maxim Dounin2013-03-27
|
* Event connect: don't penalize AF_INET6 connections.Maxim Dounin2013-03-27
| | | | | | Problems with setsockopt(TCP_NODELAY) and setsockopt(TCP_NOPUSH), as well as sendfile() syscall on Solaris, are specific to UNIX-domain sockets. Other address families, i.e. AF_INET and AF_INET6, are fine.
* Version bump.Maxim Dounin2013-03-27
|
* Use NGX_FILE_ERROR for handling file operations errors.Valentin Bartenev2013-03-25
| | | | | | | | | | | On Win32 platforms 0 is used to indicate errors in file operations, so comparing against -1 is not portable. This was not much of an issue in patched code, since only ngx_fd_info() test is actually reachable on Win32 and in worst case it might result in bogus error log entry. Patch by Piotr Sikora.
* Upstream: removed rudiments of upstream connection caching.Ruslan Ermilov2013-03-25
| | | | This functionality is now provided by ngx_http_upstream_keepalive_module.
* Upstream: removed sorting of upstream servers.Ruslan Ermilov2013-03-25
| | | | | | | | Sorting of upstream servers by their weights is not required by current balancing algorithms. This will likely change mapping to backends served by ip_hash weighted upstreams.
* Mail: IPv6 backends (ticket #323).Ruslan Ermilov2013-03-25
|
* Upstream: removed double-free workarounds in peer.free() methods.Ruslan Ermilov2013-03-25
|
* Upstream: only call peer.free() if peer.get() selected a peer.Ruslan Ermilov2013-03-25
|
* Split clients: check length when parsing configuration.Ruslan Ermilov2013-03-21
|
* Removed unused ngx_http_clear_variable() macro.Ruslan Ermilov2013-03-21
|
* Fixed language in a comment preceding ngx_http_index_handler().Ruslan Ermilov2013-03-21
|
* Moved ngx_array_t definition from ngx_core.h to ngx_array.h.Ruslan Ermilov2013-03-21
|
* Use NGX_DEFAULT_POOL_SIZE macro where appropriate.Ruslan Ermilov2013-03-21
|
* Simplified ngx_array_create().Ruslan Ermilov2013-03-21
|
* Core: fixed resource leak if binary upgrade fails due to no memory.Ruslan Ermilov2013-03-20
| | | | Found by Coverity (CID 992320).
* Preliminary experimental support for SPDY draft 2.Valentin Bartenev2013-03-20
|
* Win32: disabled MSVC warning about '\0' not fitting into array.Valentin Bartenev2013-03-20
| | | | | | | We believe that this warning produces more inconvience than real benefit. Here is an example to trigger: u_char a[4] = "test";
* URI processing code moved to a separate function.Valentin Bartenev2013-03-20
| | | | This allows to reuse it in the upcoming SPDY module.
* Image filter: the "image_filter_interlace" directive.Ruslan Ermilov2013-03-19
| | | | Patch by Ian Babrou, with minor changes.
* The limit_req_status and limit_conn_status directives.Maxim Dounin2013-03-18
| | | | Patch by Nick Marden, with minor changes.
* Core: guard against failed allocation during binary upgrade.Ruslan Ermilov2013-03-18
| | | | Patch by Piotr Sikora.
* Status: introduced the "ngx_stat_waiting" counter.Valentin Bartenev2013-03-15
| | | | | | | | | | | And corresponding variable $connections_waiting was added. Previously, waiting connections were counted as the difference between active connections and the sum of reading and writing connections. That made it impossible to count more than one request in one connection as reading or writing (as is the case for SPDY). Also, we no longer count connections in handshake state as waiting.
* Allow to reuse connections that wait their first request.Valentin Bartenev2013-03-15
| | | | | | | | This should improve behavior under deficiency of connections. Since SSL handshake usually takes significant amount of time, we exclude connections from reusable queue during this period to avoid premature flush of them.
* Upstream: fixed previous commit.Maxim Dounin2013-03-14
| | | | | Store r->connection on stack to make sure it's still available if request finalization happens to actually free request memory.
* Upstream: call ngx_http_run_posted_requests() on resolve errors.Maxim Dounin2013-03-14
| | | | | | | | | | | | | | | | | | | | | | | If proxy_pass to a host with dynamic resolution was used to handle a subrequest, and host resolution failed, the main request wasn't run till something else happened on the connection. E.g. request to "/zzz" with the following configuration hanged: addition_types *; resolver 8.8.8.8; location /test { set $ihost xxx; proxy_pass http://$ihost; } location /zzz { add_after_body /test; return 200 "test"; } Report and original version of the patch by Lanshun Zhou, http://mailman.nginx.org/pipermail/nginx-devel/2013-March/003476.html.
* Request body: avoid linking rb->buf to r->header_in.Maxim Dounin2013-03-14
| | | | | | | | Code to reuse of r->request_body->buf in upstream module assumes it's dedicated buffer, hence after 1.3.9 (r4931) it might reuse r->header_in if client_body_in_file_only was set, resulting in original request corruption. It is considered to be safer to always create a dedicated buffer for rb->bufs to avoid such problems.
* Request body: next upstream fix.Maxim Dounin2013-03-14
| | | | | | | | | | | | | | After introduction of chunked request body handling in 1.3.9 (r4931), r->request_body->bufs buffers have b->start pointing to original buffer start (and b->pos pointing to real data of this particular buffer). While this is ok as per se, it caused bad things (usually original request headers included before the request body) after reinit of the request chain in ngx_http_upstream_reinit() while sending the request to a next upstream server (which used to do b->pos = b->start for each buffer in the request chain). Patch by Piotr Sikora.
* Fixed logging in ngx_http_wait_request_handler().Maxim Dounin2013-03-12
| | | | | | | | If c->recv() returns 0 there is no sense in using ngx_socket_errno for logging, its value meaningless. (The code in question was copied from ngx_http_keepalive_handler(), but ngx_socket_errno makes sense there as it's used as a part of ECONNRESET handling, and the c->recv() call is preceeded by the ngx_set_socket_errno(0) call.)
* Removed unused prototype of ngx_http_find_server_conf().Valentin Bartenev2013-03-11
| | | | | This function prototype and its implementation was added in r90, but the implementation was removed in r97.
* Gzip: fixed setting of NGX_HTTP_GZIP_BUFFERED.Valentin Bartenev2013-03-11
| | | | | | | | | | | | | | In r2411 setting of NGX_HTTP_GZIP_BUFFERED in c->buffered was moved from ngx_http_gzip_filter_deflate_start() to ngx_http_gzip_filter_buffer() since it was always called first. But in r2543 the "postpone_gzipping" directive was introduced, and if postponed gzipping is disabled (the default setting), ngx_http_gzip_filter_buffer() is not called at all. We must always set NGX_HTTP_GZIP_BUFFERED after the start of compression since there is always a trailer that is buffered. There are no known cases when it leads to any problem with current code. But we already had troubles in upcoming SPDY implementation.
* SSL: Next Protocol Negotiation extension support.Valentin Bartenev2013-03-07
| | | | | | | | | Not only this is useful for the upcoming SPDY support, but it can also help to improve HTTPS performance by enabling TLS False Start in Chrome/Chromium browsers [1]. So, we always enable NPN for HTTPS if it is supported by OpenSSL. [1] http://www.imperialviolet.org/2012/04/11/falsestart.html
* Refactored ngx_http_init_request().Valentin Bartenev2013-03-07
| | | | | Now it can be used as the request object factory with minimal impact on the connection object. Therefore it was renamed to ngx_http_create_request().
* Removed c->single_connection flag.Valentin Bartenev2013-03-07
| | | | | | | The c->single_connection was intended to be used as lock mechanism to serialize modifications of request object from several threads working with client and upstream connections. The flag is redundant since threads in nginx have never been used that way.
* Respect the new behavior of TCP_DEFER_ACCEPT.Valentin Bartenev2013-03-07
| | | | | | | | | In Linux 2.6.32, TCP_DEFER_ACCEPT was changed to accept connections after the deferring period is finished without any data available. (Reading from the socket returns EAGAIN in this case.) Since in nginx TCP_DEFER_ACCEPT is set to "post_accept_timeout", we do not need to wait longer if deferred accept returns with no data.
* Use "client_header_timeout" for all requests in a connection.Valentin Bartenev2013-03-07
| | | | | | | | | | | Previously, only the first request in a connection used timeout value from the "client_header_timeout" directive while reading header. All subsequent requests used "keepalive_timeout" for that. It happened because timeout of the read event was set to the value of "keepalive_timeout" in ngx_http_set_keepalive(), but was not removed when the next request arrived.
* Create request object only after the first byte was received.Valentin Bartenev2013-03-07
| | | | | | | | | | | | | Previously, we always created an object and logged 400 (Bad Request) in access log if a client closed connection without sending any data. Such a connection was counted as "reading". Since it's common for modern browsers to behave like this, it's no longer considered an error if a client closes connection without sending any data, and such a connection will be counted as "waiting". Now, we do not log 400 (Bad Request) and keep memory footprint as small as possible.
* Version bump.Valentin Bartenev2013-03-07
|