Commit Graph

105 Commits

Author SHA1 Message Date
Maxim Dounin
8967b7e032 Merge of r4948, r4949, r4964, r4973, r5011: variables.
*) Allow the complex value to be defined as an empty string.
   This makes conversion from strings to complex values possible
   without the loss of functionality.

*) The "auth_basic" directive gained support of variables.

*) Fixed variable syntax checking in "set", "geo", "limit_conn_zone",
   and "perl_set" directives.

*) Added checks that disallow adding a variable with an empty name.
   Added variable name syntax checks to "geo" and "map" directives.

*) Variables $pipe, $request_length, $time_iso8601, and $time_local.
   Log module counterparts are preserved for efficiency.
   Based on patch by Kiril Kalchev.
2013-02-10 03:08:42 +00:00
Maxim Dounin
663e14e10d Merge of r4921, r4922, r4923, r4924, r4925: request body fixes.
*) Request body: fixed "501 Not Implemented" error handling.

   It is not about "Method" but a generic message, and is expected to be used
   e.g. if specified Transfer-Encoding is not supported.  Fixed message to
   match RFC 2616.

   Additionally, disable keepalive on such errors as we won't be able to read
   request body correctly if we don't understand Transfer-Encoding used.

*) Request body: $request_body variable generalization.

   The $request_body variable was assuming there can't be more than two
   buffers.  While this is currently true due to request body reading
   implementation details, this is not a good thing to depend on and may
   change in the future.

*) Request body: code duplication reduced, no functional changes.

   The r->request_body_in_file_only with empty body case is now handled in
   ngx_http_write_request_body().

*) Request body: fixed socket leak on errors.

   The r->main->count reference counter was always incremented in
   ngx_http_read_client_request_body(), while it is only needs to be
   incremented on positive returns.

*) Request body: properly handle events while discarding body.

   An attempt to call ngx_handle_read_event() before actually reading
   data from a socket might result in read event being disabled, which is
   wrong.  Catched by body.t test on Solaris.
2012-12-11 13:18:50 +00:00
Maxim Dounin
18590cd21e Merge of r4914: variables $request_time and $msec.
Log module counterparts are preserved for efficiency.
2012-12-10 16:03:56 +00:00
Maxim Dounin
3f72b59412 Merge of r4886, r4887, r4894: log variables generalization:
*) Log: $apache_bytes_sent removed.  It was renamed to $body_bytes_sent
   in nginx 0.3.10 and the old name is deprecated since then.

*) Variable $bytes_sent.  It replicates variable $bytes_sent as previously
   available in log module only.  Patch by Benjamin Grössing (with minor
   changes).

*) Variables $connection and $connection_requests.  Log module
   counterparts are removed as they aren't used often and there is no
   need to preserve them for efficiency.
2012-11-13 10:45:23 +00:00
Maxim Dounin
92486bd9cc Merge of r4698: X-Forwarded-For conditionals.
Fixed compile-time conditionals used to detect if X-Forwarded-For support
is needed.

Note: compatibility shims were added during merge to avoid possible
breakage of 3rd party modules.  At least cache purge module was broken
by the original commit, as it used to rely on NGX_HTTP_PROXY define.
2012-07-02 17:41:52 +00:00
Maxim Dounin
c7fcd1e78a Merge of r4686, r4687: $status variable.
Contains response status code as a 3-digit integer
(with leading zeroes if necessary), or one of the following values:

    000 - response status code has not yet been assigned
    009 - HTTP/0.9 request is being processed
2012-07-02 16:53:36 +00:00
Maxim Dounin
e5ae5b6890 Merge of r4642:
Fixed core variables dynamic access after reconfiguration.

If variable was indexed in previous configuration but not in current
one, the NGX_HTTP_VAR_INDEXED flag was left set and confused
ngx_http_get_variable().

Patch by Yichun Zhang (agentzh), slightly modified.
2012-07-02 14:42:08 +00:00
Ruslan Ermilov
47a04aaa27 Fixed spelling in multiline C comments. 2012-04-03 07:37:31 +00:00
Maxim Dounin
36aef0c383 Fixed unconditional MAX_PATH usage (ticket #22).
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-27 16:42:34 +00:00
Ruslan Ermilov
926ded6f4c Implemented $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, and
$tcpinfo_rcv_space variables.  Supported on Linux and FreeBSD.
2012-03-16 19:15:33 +00:00
Ruslan Ermilov
091f6ffce6 Slight optimization in ngx_http_get_variable_index(). 2012-03-15 19:41:35 +00:00
Maxim Dounin
947fc03ca3 Variables: honor no_cacheable for not_found variables.
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-13 15:31:07 +00:00
Maxim Konovalov
f8d59e33f3 Copyright updated. 2012-01-18 15:07:43 +00:00
Valentin Bartenev
8d3ef1a3b3 Fixed: some of $sent_http_* variables may contain header entries that actually
haven't been sent to a client.

The ngx_http_variable_headers() and ngx_http_variable_unknown_header() functions
did not ignore response header entries with zero "hash" field.

Thanks to Yichun Zhang (agentzh).
2011-12-09 16:17:12 +00:00
Valentin Bartenev
247332a1e2 Added the $https variable. 2011-12-09 14:38:11 +00:00
Igor Sysoev
53d05b969b change ngx_http_map_find(): use case sensitive regexes 2011-05-30 12:36:17 +00:00
Igor Sysoev
0519b43a77 allow regex as "map" parameter 2011-03-16 15:32:31 +00:00
Igor Sysoev
0923d08148 change ngx_http_variable_value_node_t to more generic ngx_str_node_t 2010-06-23 15:31:33 +00:00
Igor Sysoev
05b1a8f1e3 ngx_str_set() and ngx_str_null() 2010-05-14 09:56:37 +00:00
Igor Sysoev
fa7d06ee4f change processing variables accessed by SSI and perl module:
*) the indexed variables are always flushed
*) never show warning for not found variables
2010-04-22 14:02:45 +00:00
Igor Sysoev
185a5d1726 make $arg_ variables non-cacheable 2010-04-22 13:35:30 +00:00
Igor Sysoev
1ee4b09091 make $request_method non-cacheable 2010-03-03 16:14:07 +00:00
Igor Sysoev
ded2a7c1af fix $upstream_http_ variable prefix length 2010-02-15 19:38:59 +00:00
Igor Sysoev
e4bc4a2940 named captures worked for two names only 2010-01-11 11:21:46 +00:00
Igor Sysoev
6956db0696 fix building without PCRE, the bug had been introduced in r3326 2009-11-23 13:13:58 +00:00
Igor Sysoev
42f5fb19ac evaluate maximum captures size on configuration phase 2009-11-16 19:11:38 +00:00
Igor Sysoev
d86a0bfed4 fix captures in "rewrite", the bug had been introduced in r3326 2009-11-16 19:10:45 +00:00
Igor Sysoev
c05f20ec2e regex named captures 2009-11-16 12:19:02 +00:00
Igor Sysoev
956bdfc000 fix segfault if $limit_rate was logged 2009-11-03 15:05:38 +00:00
Igor Sysoev
67765e8918 use sin6_addr.s6_addr instead of "(u_char *) & .sin6_addr" 2009-11-02 14:32:46 +00:00
Igor Sysoev
5b6b1fda1c allow to log invalid $request in access_log always,
before it was logged only if error_log was set to info or debug level
2009-09-21 15:55:56 +00:00
Igor Sysoev
430d42bfdc fix segfault introduced in r2845 2009-05-22 11:32:17 +00:00
Igor Sysoev
2a9ce62631 use ngx_connection_local_sockaddr() instead of ngx_http_server_addr() 2009-05-18 12:58:19 +00:00
Igor Sysoev
ff07f319c9 $request_body variable 2009-05-14 11:40:51 +00:00
Igor Sysoev
3e7e9d72e5 fix segfault introduced in r2486 in $sent_http_location processing 2009-02-24 22:02:08 +00:00
Igor Sysoev
1f4220ee86 small optimization: " == NGX_ERROR" > " != NGX_OK" 2009-02-24 10:42:23 +00:00
Igor Sysoev
1966aedd6d axe r->port_text 2009-02-24 07:29:55 +00:00
Igor Sysoev
a35eaccdec a prelimiary IPv6 support, HTTP listen 2009-02-21 07:02:02 +00:00
Igor Sysoev
867d63bc1a fix $sent_http_location for local redirects 2009-01-30 05:26:27 +00:00
Igor Sysoev
84d17bba65 ngx_http_arg() 2008-12-22 12:02:05 +00:00
Igor Sysoev
c6016b25cf $cookie_... variable did not for SSI and perl 2008-12-01 13:59:35 +00:00
Igor Sysoev
9857082f09 variable value rbtree support 2008-11-22 20:42:01 +00:00
Igor Sysoev
c8b40a2401 $cookie_... variable 2008-11-12 11:12:02 +00:00
Igor Sysoev
6736614275 $realpath_root 2008-09-27 11:53:41 +00:00
Igor Sysoev
ea1c7c7f16 $pid 2008-09-15 16:41:08 +00:00
Igor Sysoev
5d4e80b8fb remove unused #include's 2008-09-05 15:25:47 +00:00
Igor Sysoev
6a75019ad6 *) remove zero termination in ngx_inet_ntop() and ngx_sock_ntop()
*) use ngx_snprintf() in ngx_inet_ntop() and ngx_sock_ntop()
   as they are called just once per connection
*) NGX_INET_ADDRSTRLEN
2008-08-21 18:47:23 +00:00
Igor Sysoev
42511c05c7 $arg_... variable 2008-08-04 11:10:52 +00:00
Igor Sysoev
777b019c73 ngx_strlow() 2008-08-04 10:07:00 +00:00
Igor Sysoev
7f6b2ffc60 *) back out r2040
*) refactor ngx_palloc()
*) introduce ngx_pnalloc()
*) additional pool blocks have smaller header
2008-06-17 15:00:30 +00:00