summaryrefslogtreecommitdiffhomepage
path: root/src/http (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2012-04-12Mp4: sanity checks cleanup.Maxim Dounin1-66/+208
2012-04-12Fixed buffer overflow when long URI is processed by "try_files" inRuslan Ermilov1-5/+14
regex location with "alias" (fixes ticket #135).
2012-04-11Fixed directives inheritance.Ruslan Ermilov1-3/+5
2012-04-10Access module: fixed inheritance of allow/deny ipv6 rules.Maxim Dounin1-4/+9
Previous (incorrect) behaviour was to inherit ipv6 rules separately from ipv4 ones. Now all rules are either inherited (if there are no rules defined at current level) or not (if there are any rules defined).
2012-04-10Fixed debug logging.Igor Sysoev1-1/+1
2012-04-10Fixed previous commit.Igor Sysoev1-1/+1
2012-04-10Fixed mp4 module seek.Igor Sysoev1-1/+1
2012-04-03Fixed spelling in multiline C comments.Ruslan Ermilov5-5/+5
2012-04-02Upstream: reject upstreams without normal servers.Maxim Dounin1-0/+7
Such upstreams cause CPU hog later in the code as number of peers isn't expected to be 0. Currently this may happen either if there are only backup servers defined in an upstream block, or if server with ipv6 address used in an upstream block.
2012-04-02Version bump.Maxim Dounin1-1/+1
2012-03-29Corrected spelling of error message (ticket #136).Ruslan Ermilov1-1/+1
2012-03-28Replaced ngx_http_realip_from_t with ngx_in_cidr_t.Ruslan Ermilov1-10/+4
2012-03-28Fixed calculation of range boundaries.Ruslan Ermilov1-11/+8
2012-03-28Xslt: parser options now set with xmlCtxtUseOptions().Maxim Dounin1-3/+2
Note that "ctxt->loadsubset = 1" previously used isn't really correct as ctxt->loadsubset is a bitfield now. The use of xmlCtxtUseOptions() with XML_PARSE_DTDLOAD is believed to be a better way to do the same thing. Patch by Laurence Rowe.
2012-03-27Fixed unconditional MAX_PATH usage (ticket #22).Maxim Dounin1-2/+20
POSIX doesn't require it to be defined, and Debian GNU/Hurd doesn't define it. Note that if there is no MAX_PATH defined we have to use realpath() with NULL argument and free() the result.
2012-03-22Added xslt_param and xslt_string_param directives.Maxim Dounin1-33/+168
Based on patch by Samuel Behan.
2012-03-22Fixed off-by-one in xslt parameter parsing.Maxim Dounin1-1/+1
The problem was introduced in 0.7.44 (r2589) during conversion to complex values. Previously string.len included space for terminating NUL, but with complex values it doesn't.
2012-03-22Restricted keepalive_disable safari to OS X only.Maxim Dounin1-1/+3
The problem doesn't affect non-Apple systems for sure, and many pretend to be Safari now. Prodded by Piotr Sikora.
2012-03-22Removed safari from keepalive_disable default.Maxim Dounin1-2/+1
The bug in question is likely already fixed (though unfortunately we have no information available as Apple's bugtracker isn't open), and the workaround seems to be too pessimistic for modern versions of Safari as well as other webkit-based browsers pretending to be Safari.
2012-03-21If we inserted "Last-Modified" in r->headers_out.headers, don'tRuslan Ermilov1-0/+2
forget to set the r->headers_out.last_modified pointer to it.
2012-03-21Minor ngx_http_headers_filter_module.c code cleanup.Ruslan Ermilov1-22/+20
- Removed "hash" element from ngx_http_header_val_t which was always 1. - Replaced NGX_HTTP_EXPIRES_* with ngx_http_expires_t enum type. - Added prototype for ngx_http_add_header() - Simplified ngx_http_set_last_modified().
2012-03-19For the sake of case/switch code readability, 'fall through'Maxim Konovalov2-0/+5
comments added.
2012-03-16Implemented $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, andRuslan Ermilov1-0/+73
$tcpinfo_rcv_space variables. Supported on Linux and FreeBSD.
2012-03-15Local variable "ngx_http_next_filter" renamed to "ngx_http_next_body_filter"Ruslan Ermilov2-7/+8
for consistency with other modules.
2012-03-15The "error_log" directive specified in the "http", "server", andRuslan Ermilov1-2/+9
"location" sections now understands the special "stderr" parameter. It was already treated specially when specified in the main section.
2012-03-15Slight optimization in ngx_http_get_variable_index().Ruslan Ermilov1-1/+1
2012-03-15- New variable: $connection_requests.Ruslan Ermilov1-1/+13
- While here, fixed format specifier for $connection.
2012-03-15Version bump.Maxim Dounin1-1/+1
2012-03-15Headers with null character are now rejected.Maxim Dounin1-0/+14
Headers with NUL character aren't allowed by HTTP standard and may cause various security problems. They are now unconditionally rejected.
2012-03-15Fixed incorrect ngx_cpystrn() usage in ngx_http_*_process_header().Maxim Dounin4-10/+16
This resulted in a disclosure of previously freed memory if upstream server returned specially crafted response, potentially exposing sensitive information. Reported by Matthew Daley.
2012-03-15Fixed ssi and perl interaction.Maxim Dounin1-2/+12
Embedded perl module assumes there is a space for terminating NUL character, make sure to provide it in all situations by allocating one extra byte for value buffer. Default ssi_value_length is reduced accordingly to preserve 256 byte allocations. While here, fixed another one byte value buffer overrun possible in ssi_quoted_symbol_state. Reported by Matthew Daley.
2012-03-15Uwsgi: merged r->http_version fixes from scgi module.Maxim Dounin1-12/+3
Fixed incorrect use of r->http_version (r4372). Removed duplicate function declaration (r4373). Removed error if there is no Status header (r4374).
2012-03-05Whitespace fixes.Maxim Dounin5-6/+9
2012-03-05Version bump.Maxim Dounin1-1/+1
2012-02-28Raised simultaneous subrequest limit from 50 to 200.Maxim Dounin1-1/+1
It wasn't enforced for a long time, and there are reports that people use up to 100 simultaneous subrequests now. As this is a safety limit to prevent loops, it's raised accordingly.
2012-02-28Fixed spelling in single-line comments.Ruslan Ermilov12-29/+29
2012-02-27Fix of rbtree lookup on hash collisions.Maxim Dounin3-53/+38
Previous code incorrectly assumed that nodes with identical keys are linked together. This might not be true after tree rebalance. Patch by Lanshun Zhou.
2012-02-27Disable symlinks: added the "from=" parameter to the "disable_symlinks"Valentin Bartenev2-16/+144
directive.
2012-02-27Disable symlinks: initialization of the "disable_symlinks" field inValentin Bartenev10-33/+65
ngx_open_file_info_t moved to a separate function. This is preparation for the "from=" parameter implementation of the "disable_symlinks" directive.
2012-02-27Added support for the 307 Temporary Redirect.Ruslan Ermilov6-14/+34
2012-02-22Renamed constants and fixed off-by-one error in "msie_padding on" handling.Ruslan Ermilov1-18/+15
2012-02-20Version bump.Maxim Dounin1-1/+1
2012-02-13Support for disable_symlinks in various modules.Andrey Belov8-2/+64
2012-02-13Added disable_symlinks directive.Andrey Belov2-0/+39
To completely disable symlinks (disable_symlinks on) we use openat(O_NOFOLLOW) for each path component to avoid races. To allow symlinks with the same owner (disable_symlinks if_not_owner), use openat() (followed by fstat()) and fstatat(AT_SYMLINK_NOFOLLOW), and then compare uids between fstat() and fstatat(). As there is a race between openat() and fstatat() we don't know if openat() in fact opened symlink or not. Therefore, we have to compare uids even if fstatat() reports the opened component isn't a symlink (as we don't know whether it was symlink during openat() or not). Default value is off, i.e. symlinks are allowed.
2012-02-13Time parsing cleanup.Maxim Dounin7-33/+18
Nuke NGX_PARSE_LARGE_TIME, it's not used since 0.6.30. The only error ngx_parse_time() can currently return is NGX_ERROR, check it explicitly and make sure to cast it to appropriate type (either time_t or ngx_msec_t) to avoid signedness warnings on platforms with unsigned time_t (notably QNX).
2012-02-13Fixed build with embedded perl and --with-openssl.Maxim Dounin1-1/+5
2012-02-13Core: protection from cycles with named locations and post_action.Maxim Dounin2-0/+14
Now redirects to named locations are counted against normal uri changes limit, and post_action respects this limit as well. As a result at least the following (bad) configurations no longer trigger infinite cycles: 1. Post action which recursively triggers post action: location / { post_action /index.html; } 2. Post action pointing to nonexistent named location: location / { post_action @nonexistent; } 3. Recursive error page for 500 (Internal Server Error) pointing to a nonexistent named location: location / { recursive_error_pages on; error_page 500 @nonexistent; return 500; }
2012-02-13Core: protection from subrequest loops.Maxim Dounin2-1/+1
Without the protection, subrequest loop results in r->count overflow and SIGSEGV. Protection was broken in 0.7.25. Note that this also limits number of parallel subrequests. This wasn't exactly the case before 0.7.25 as local subrequests were completed directly. See here for details: http://nginx.org/pipermail/nginx-ru/2010-February/032184.html
2012-02-13Variables: honor no_cacheable for not_found variables.Maxim Dounin1-1/+1
Variables with the "not_found" flag set follow the same rules as ones with the "valid" flag set. Make sure ngx_http_get_flushed_variable() will flush non-cacheable variables with the "not_found" flag set. This fixes at least one known problem with $args not available in a subrequest (with args) when there were no args in the main request and $args variable was queried in the main request (reported by Laurence Rowe aka elro on irc). Also this eliminates unneeded call to ngx_http_get_indexed_variable() in cacheable case (as it will return cached value anyway).
2012-02-13Fix for proxy_store leaving temporary files for subrequests.Maxim Dounin1-18/+15
Temporary files might not be removed if the "proxy_store" or "fastcgi_store" directives were used for subrequests (e.g. ssi includes) and client closed connection prematurely. Non-active subrequests are finalized out of the control of the upstream module when client closes a connection. As a result, the code to remove unfinished temporary files in ngx_http_upstream_process_request() wasn't executed. Fix is to move relevant code into ngx_http_upstream_finalize_request() which is called in all cases, either directly or via the cleanup handler.