Maxim Konovalov
f8d59e33f3
Copyright updated.
2012-01-18 15:07:43 +00:00
Valentin Bartenev
1373558163
Added support for IP-literal in the Host header and request line (ticket #1 ).
...
Additional parsing logic added to correctly handle RFC 3986 compliant IPv6 and
IPvFuture characters enclosed in square brackets.
The host validation was completely rewritten. The behavior for non IP literals
was changed in a more proper and safer way:
- Host part is now delimited either by the first colon or by the end of string
if there's no colon. Previously the last colon was used as delimiter which
allowed substitution of a port number in the $host variable.
(e.g. Host: 127.0.0.1:9000:80)
- Fixed stripping of the ending dot in the Host header when the host was also
followed by a port number.
(e.g. Host: nginx.com.:80)
- Fixed upper case characters detection. Previously it was broken which led to
wasting memory and CPU.
2011-11-28 09:15:33 +00:00
Maxim Dounin
0560ae55bc
Fixed segfault on ssl servers without cert with SNI (ticket #54 ).
...
Non-default servers may not have ssl context created if there are no
certificate defined. Make sure to check if ssl context present before
using it.
2011-11-22 16:27:45 +00:00
Maxim Dounin
0f5f4cb180
Fix for socket leak with "aio sendfile" and "limit_rate".
...
Second aio post happened when timer set by limit_rate expired while we have
aio request in flight, resulting in "second aio post" alert and socket leak.
The patch adds actual protection from aio calls with r->aio already set to
aio sendfile code in ngx_http_copy_filter(). This should fix other cases
as well, e.g. when sending buffered to disk upstream replies while still
talking to upstream.
The ngx_http_writer() is also fixed to handle the above case (though it's
mostly optimization now).
Reported by Oleksandr V. Typlyns'kyi.
2011-10-11 18:00:23 +00:00
Maxim Dounin
b7af402cc4
Fix for connection drops with AIO.
...
Connections serving content with AIO to fast clients were dropped with
"client timed out" messages after send_timeout from response start.
2011-10-11 17:58:51 +00:00
Maxim Dounin
fbc51e4c44
Better handling of various per-server ssl options with SNI.
...
SSL_set_SSL_CTX() doesn't touch values cached within ssl connection
structure, it only changes certificates (at least as of now, OpenSSL
1.0.0d and earlier).
As a result settings like ssl_verify_client, ssl_verify_depth,
ssl_prefer_server_ciphers are only configurable on per-socket basis while
with SNI it should be possible to specify them different for two servers
listening on the same socket.
Workaround is to explicitly re-apply settings we care about from context
to ssl connection in servername callback.
Note that SSL_clear_options() is only available in OpenSSL 0.9.8m+. I.e.
with older versions it is not possible to clear ssl_prefer_server_ciphers
option if it's set in default server for a socket.
2011-08-23 14:36:31 +00:00
Igor Sysoev
21fd22d089
always set timer in discard body handler, this fixes the cases
...
when request for static file is redirected by error_page to an SSI page
patch by Maxim Dounin
2011-08-01 13:52:54 +00:00
Igor Sysoev
2505587b4d
lingering_close "off|on|always"
...
patch by Maxim Dounin
2011-08-01 13:26:55 +00:00
Igor Sysoev
41c8a1d27f
do not send RST on normal lingering close read timeout,
...
if reset_timedout_connection is on
patch by Maxim Dounin
2011-08-01 13:08:03 +00:00
Igor Sysoev
2f3668b59b
enable lingering close for pipelined requests
...
patch by Maxim Dounin
2011-08-01 11:08:57 +00:00
Igor Sysoev
6652cc5962
Accept-Encoding refactoring: remove ancient MSIE 4.x test for gzip
2011-07-30 06:20:06 +00:00
Igor Sysoev
4956ac5108
reuse keepalive connections if there are no free worker connections
...
patch by Maxim Dounin
2011-04-04 12:26:53 +00:00
Igor Sysoev
26cf2c96ea
introduce 494 code "Request Header Too Large"
2011-01-20 10:37:58 +00:00
Igor Sysoev
ec4df838c8
"If-Unmodified-Since" support
2010-12-06 11:11:05 +00:00
Igor Sysoev
a5ee005a27
fix recognition of SSLv2 Client Hello Packet large than 255 bytes
2010-07-05 13:35:20 +00:00
Igor Sysoev
da7b5e15de
allow spaces in URI
2010-06-15 09:31:19 +00:00
Igor Sysoev
04e1156d2e
test default NTFS stream "::$DATA"
2010-06-04 15:37:49 +00:00
Igor Sysoev
8164f329fe
disable keepalive for Safari:
...
https://bugs.webkit.org/show_bug.cgi?id=5760
2010-02-01 12:01:01 +00:00
Igor Sysoev
77860d74a5
skip URI trailing spaces under Win32
2010-01-28 14:09:28 +00:00
Igor Sysoev
918ef947da
Fix segfault when while discarding body a write event handler is called,
...
runs ngx_http_core_run_phases(), and starts a request processing again.
The write event has clear type and remained in a keepalive connection.
The bug was introduced in r3050.
2010-01-28 08:33:24 +00:00
Igor Sysoev
c05f20ec2e
regex named captures
2009-11-16 12:19:02 +00:00
Igor Sysoev
bdc154bb73
r->chrome
2009-11-12 14:23:18 +00:00
Igor Sysoev
51aa6dec4d
fix segfault if there is single large_client_header_buffers
...
and a request line fills it completely
2009-11-03 18:12:20 +00:00
Igor Sysoev
663e957957
do not run regex for empty host name since regex always fails in this case,
...
the bug had been introduced in r2196
2009-10-22 09:48:42 +00:00
Igor Sysoev
cd8b43cde7
rename core_srv_conf fields to more understandable default_server and server
2009-10-21 16:52:10 +00:00
Igor Sysoev
2a634f5342
fix r3218:
...
Initially building lists of ports, addresses, and server names had been
placed at final configuration stage, because complete set of the "listen"s
and the "server_names" were required for this operation. r3218 broke it,
because the "listen"s go usually first in configuration, and
cscf->server_names is empty at this stage, therefore no virtual names
were configured.
Now server configurations are stored in array for each address:port
to configure virtual names. Also regex captures flag is moved from
server names to core server configuration.
2009-10-21 16:27:48 +00:00
Igor Sysoev
e418e0661c
fix two previous commits: an early parallel body discarding completion
...
disables incomplete ngx_http_writer()
2009-10-20 11:48:28 +00:00
Igor Sysoev
9a1f0ac730
allow discarding body while a long response transfer
2009-10-19 16:13:38 +00:00
Igor Sysoev
801a35df3c
restore discard body handler after ngx_http_set_writer() set it to
...
ngx_http_test_reading(), the bug was introduced in r3050
2009-10-19 16:12:13 +00:00
Igor Sysoev
2495c4d50b
add lingering timeout if a response is short and a request body is being
...
discarded, the bug was introduced in r3050
2009-10-19 14:08:09 +00:00
Igor Sysoev
2d24d749e4
clear r->keepalive to disable preventively calling
...
ngx_http_set_keepalive() while request cleanup
2009-10-02 11:30:47 +00:00
Igor Sysoev
689064b91a
log 499 instead 0, the bug was introduced in r3050
2009-09-30 12:05:08 +00:00
Igor Sysoev
f63a48ce7e
update the previous commit: use ngx_strlow()
2009-09-24 13:23:25 +00:00
Igor Sysoev
6749e92938
$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
2009-09-24 13:15:50 +00:00
Igor Sysoev
7386cf58a7
fix request counter for post_action, the bug was introduced in r3050
2009-09-21 18:34:22 +00:00
Igor Sysoev
56f06e69df
use %*s instead of %V
2009-09-01 12:35:52 +00:00
Igor Sysoev
ddda411d14
*) ngx_http_ephemeral
...
*) use preallocated terminal_posted_request
2009-08-30 09:47:11 +00:00
Igor Sysoev
aa4200b551
do not disable gzip for MSIE 6.0 SV1 in "gzip_disable msie6"
2009-08-28 08:19:02 +00:00
Igor Sysoev
a962506498
FreeBSD and Linux AIO support
2009-08-28 08:12:35 +00:00
Igor Sysoev
1163af9fae
style fix
2009-08-28 07:50:45 +00:00
Igor Sysoev
5297d456d8
axe r->connection->destroyed testing
2009-08-26 16:14:57 +00:00
Igor Sysoev
b603dd4b43
request reference counter
2009-08-26 16:04:05 +00:00
Igor Sysoev
1099f9f657
fix segfault if 400 or 414 errors are handled intricately
2009-07-24 19:20:29 +00:00
Igor Sysoev
5b4b7c58cc
*) $ssl_client_verify
...
*) "ssl_verify_client ask" was changed to "ssl_verify_client optional"
2009-07-22 17:41:42 +00:00
Igor Sysoev
a4038c8e71
fix r2972, it caused "zero size buf" alert.
2009-07-22 13:06:27 +00:00
Igor Sysoev
15e3b01819
geo module supports trusted proxies
2009-07-22 09:43:14 +00:00
Igor Sysoev
2376d6082a
skip URI trailing dots under Win32
2009-07-14 08:51:20 +00:00
Igor Sysoev
2e9542b910
fix ngx_http_send_special() for subrequests handled by perl
2009-07-09 13:32:51 +00:00
Igor Sysoev
a5fe5881c6
ignore ngx_atomic_fetch_add() result
...
this fixes building at least by gcc 4.2.1 on Mac OS X 10.6
2009-06-18 13:14:51 +00:00
Igor Sysoev
8416832621
fix "out of memory" case handling
2009-05-29 11:42:55 +00:00
Igor Sysoev
e959128b4a
keepalive_requests
2009-05-25 15:38:36 +00:00
Igor Sysoev
3b74b8eeb9
fix socket leak introduced in r2378
2009-05-25 09:56:01 +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
868d805c8b
delete unneeded cast
2009-05-18 07:47:58 +00:00
Igor Sysoev
fd4191845b
handle big responses for "size" and "test" image_filters
2009-05-08 14:25:51 +00:00
Igor Sysoev
0cd76ea290
*) refactor error_log processing: listen socket log might inherit built-in
...
error_log with zero level, and r2447, r2466, r2467 were not enough
*) remove bogus "stderr" level
*) some functions and fields renames
2009-04-30 13:53:42 +00:00
Igor Sysoev
bf14b000e6
ngx_path_separator()
2009-04-23 16:38:59 +00:00
Igor Sysoev
e46943965d
backout r2535: virtual names is a property of address:port pair,
...
but is not a property of server configuration
2009-04-09 13:56:16 +00:00
Igor Sysoev
1dcaa97ccc
refactor ngx_http_arg() using ngx_strcasestrn(),
...
back out zero termination introduced in r2138
2009-04-04 17:51:38 +00:00
Igor Sysoev
3658a5bdc6
fix $server_addr for wildcard listen, the has been introduced in r2513
2009-03-18 12:23:57 +00:00
Igor Sysoev
648b0dcf28
fix building without PCRE, introduced in r2553
2009-03-12 11:42:34 +00:00
Igor Sysoev
0bd7b00eb7
ignore EINVAL from setsockopt() on Solaris
2009-03-12 07:16:15 +00:00
Igor Sysoev
000609ae76
fix segfaults introduced in r2549 and r2550
2009-03-11 13:04:02 +00:00
Igor Sysoev
dc34dee2f2
fix segfaults introduced in r2550
2009-03-09 08:50:34 +00:00
Igor Sysoev
7ac9f3605c
captures support in server_name
2009-03-06 12:50:20 +00:00
Igor Sysoev
1f4220ee86
small optimization: " == NGX_ERROR" > " != NGX_OK"
2009-02-24 10:42:23 +00:00
Igor Sysoev
fed1ca0dc7
move r->virtual_names to ngx_http_core_srv_conf_t
2009-02-24 07:56:47 +00:00
Igor Sysoev
1966aedd6d
axe r->port_text
2009-02-24 07:29:55 +00:00
Igor Sysoev
80a4f29c8a
axe r->port
2009-02-23 21:19:35 +00:00
Igor Sysoev
2d95c82f91
axe r->in_addr
2009-02-23 21:05:10 +00:00
Igor Sysoev
a35eaccdec
a prelimiary IPv6 support, HTTP listen
2009-02-21 07:02:02 +00:00
Igor Sysoev
32856e1bc8
avoid a double redirect response if
...
*) a request is going in a keep alive state,
*) the request body should be discarded,
*) epoll/rtsig reports about the response header has been sent,
*) and write event handler calls core phase handler
2009-01-31 20:44:30 +00:00
Igor Sysoev
c9aae14a7e
use "!= NGX_OK" instead of "== NGX_ERROR"
2008-12-09 17:27:48 +00:00
Igor Sysoev
f8ffc2eb59
delete unneeded call
2008-12-09 16:49:52 +00:00
Igor Sysoev
851cd73f1d
*) refactor subrequest handling, now they run as separate posted requests
...
*) now $upstream_addr, $upstream_status, $upstream_response_time can be used
with log_subrequest
2008-12-08 14:23:20 +00:00
Igor Sysoev
5bf2087462
allow POST without Content-Length
2008-12-08 14:04:31 +00:00
Igor Sysoev
abe378e820
ngx_http_limit_req_module
2008-11-10 15:22:33 +00:00
Igor Sysoev
eb62fa0e73
refactor log_subrequest
2008-09-29 13:18:41 +00:00
Igor Sysoev
5d1dcce2c5
update log_subrequest
2008-09-29 07:12:04 +00:00
Igor Sysoev
9059ecae83
fix the previous commit
2008-09-29 04:46:21 +00:00
Igor Sysoev
2eec1e1ff2
*) log_subrequest
...
*) flush variables in access log
2008-09-27 15:08:02 +00:00
Igor Sysoev
753792e108
underscores_in_headers
2008-09-24 14:02:50 +00:00
Igor Sysoev
05a7656d2c
set request handlers, this fixes complex proxied 400 handler with SSI includes
2008-09-15 16:44:37 +00:00
Igor Sysoev
5d4e80b8fb
remove unused #include's
2008-09-05 15:25:47 +00:00
Igor Sysoev
f100c7816d
*) listen ssl
...
*) no default ssl_cetificate and ssl_cetificate_key
2008-09-01 14:19:01 +00:00
Igor Sysoev
54477e417a
gzip_disable msie6
2008-08-26 15:09:28 +00:00
Igor Sysoev
b29426deb8
server_name "" support
2008-08-21 12:56:10 +00:00
Igor Sysoev
cbc7c6177c
fix $r->header_in() for "User-Agent", "Connection", and "Host"
...
broken in r2005, r2006, and r2008.
2008-08-19 19:40:45 +00:00
Igor Sysoev
42511c05c7
$arg_... variable
2008-08-04 11:10:52 +00:00
Igor Sysoev
6a07833d47
ngx_hash_strlow()
2008-08-04 10:18:36 +00:00
Igor Sysoev
777b019c73
ngx_strlow()
2008-08-04 10:07:00 +00:00
Igor Sysoev
49ed6f3eec
*) ssl_verify_client ask
...
*) test ssl_client_certificate for ssl_verify_client
*) $ssl_client_cert adds TAB before each line except first one
*) $ssl_client_raw_cert contains certificate as is
2008-07-29 14:29:02 +00:00
Igor Sysoev
504efffca8
fix error message
2008-06-30 15:32:57 +00:00
Igor Sysoev
1e1f4c8a04
the "Expect" header support
2008-06-26 13:00:39 +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
Igor Sysoev
cdd4354b49
style fix
2008-05-21 17:39:51 +00:00
Igor Sysoev
48242f4b08
avoid recursive loop
2008-05-19 10:24:22 +00:00
Igor Sysoev
5fd0931a61
*) host in request line has priority
...
*) allow several Host headers
*) validate host
2008-05-15 14:44:47 +00:00
Igor Sysoev
7a06fbdcca
small fixes
2008-05-13 09:47:52 +00:00
Igor Sysoev
bc5fb294af
test user agent in header callback
2008-05-13 09:18:58 +00:00
Igor Sysoev
439e288a1b
fix memory leak when ssl_verify_client is on
2008-04-23 18:57:25 +00:00
Igor Sysoev
472233d0a3
invalidate SSL session if there is no valid client certificate
2008-03-10 14:47:07 +00:00
Igor Sysoev
ce30765975
named locations in post_action
2008-02-15 12:46:40 +00:00
Igor Sysoev
57b088d1cc
add code missed in r1856
2008-01-09 08:21:57 +00:00
Igor Sysoev
1bc3a93ddf
axe old flag remained after ancient "post_accept_timeout" directive
2008-01-08 20:55:27 +00:00
Igor Sysoev
bd68d51407
add code missed in r1830
2008-01-08 20:51:06 +00:00
Igor Sysoev
7b8ed4259b
fix socket leak if deferred accept was used
2008-01-04 09:32:12 +00:00
Igor Sysoev
0d68f27748
log right request method
2007-12-30 09:11:19 +00:00
Igor Sysoev
feee7265b5
axe useless r->server_name
2007-12-30 08:15:27 +00:00
Igor Sysoev
cc5956772b
log server address
2007-12-30 08:01:50 +00:00
Igor Sysoev
c7a9b7a990
use ngx_http_server_addr()
2007-12-29 16:00:34 +00:00
Igor Sysoev
3f24ae2be2
several changes in server_name:
...
*) server_name_in_redirect directive and removal of the '*' stub
*) use server address in redirect if host can not be detected
*) ngx_http_server_addr()
*) allow wildcard and regex names to be a main server_name
*) DAV Destination header is tested against Host header
2007-12-29 15:30:39 +00:00
Igor Sysoev
a936b27236
backout r1790
2007-12-27 14:39:05 +00:00
Igor Sysoev
3d70581d45
non-active request is not done
2007-12-27 14:20:50 +00:00
Igor Sysoev
e87afbad35
call post_action for 499
2007-12-27 13:13:34 +00:00
Igor Sysoev
cd2aa8e172
create ssl buffer on demand and free it before keep-alive
2007-12-26 21:07:30 +00:00
Igor Sysoev
12dcb354e9
style fix
2007-12-25 15:31:18 +00:00
Igor Sysoev
acb2f5d8c8
large_client_header_buffers did not free()ed before keep-alive
2007-12-12 15:42:39 +00:00
Igor Sysoev
86ef6aaa6b
move condition declarations inside blocks where they are used
2007-12-10 12:09:51 +00:00
Igor Sysoev
58ea0c1aad
copy protocol value when large request line is copied,
...
this fixes error "fastcgi: the request record is too big"
2007-12-01 12:22:48 +00:00
Igor Sysoev
1d4e9b31cc
do not allow plain 0.9 request to HTTPS
2007-12-01 11:46:04 +00:00
Igor Sysoev
96dd8af8e6
proxy_pass variables support
2007-11-27 13:34:13 +00:00
Igor Sysoev
a6b5957f92
log entire request line instead of URI only
2007-11-27 12:22:01 +00:00
Igor Sysoev
1d04b14c09
64-bit time_t compatibility
2007-11-15 14:26:36 +00:00
Igor Sysoev
6c2f052744
If-Range support
2007-11-09 15:41:35 +00:00
Igor Sysoev
8decab3dd9
merge_slashes
2007-10-18 11:36:58 +00:00
Igor Sysoev
f53294103b
pass length clearly
2007-10-01 12:57:47 +00:00
Igor Sysoev
0659720dc8
use ngx_strstrn() and ngx_strcasestrn()
2007-09-26 19:26:14 +00:00
Igor Sysoev
ec67b19ea0
there may be several "Connection" header lines and each may have several tokens
2007-09-09 18:28:49 +00:00
Igor Sysoev
589fc748ed
style fix
2007-09-07 09:29:08 +00:00
Igor Sysoev
4f62b73898
If-Modified-Since should be unique header line
2007-08-29 15:32:49 +00:00
Igor Sysoev
543a6ae513
return 400 response
2007-08-27 20:52:40 +00:00
Igor Sysoev
ae0347afc8
optimize r->connection in ngx_http_finalize_request()
2007-08-27 15:53:00 +00:00
Igor Sysoev
db7b126db2
cancel keep-alive and lingering close on EOF
2007-08-27 15:40:19 +00:00
Igor Sysoev
43c3bf42db
regex in server_name
2007-08-12 19:48:12 +00:00
Igor Sysoev
4fbd86829b
discard request body before going to keep-alive state and use lingering timeouts
2007-08-07 10:53:27 +00:00
Igor Sysoev
7ab4d9cb55
rename ngx_http_block_read() and ngx_http_test_read() to ..._reading()
2007-08-06 15:22:40 +00:00
Igor Sysoev
f53d0f3177
proxy_ignore_client_abort, fastcgi_ignore_client_abort, and so on were
...
broken by r1111
2007-07-10 20:53:45 +00:00
Igor Sysoev
9d8a75c525
the "www.example.*" wildcard hash support
2007-06-11 19:49:22 +00:00
Igor Sysoev
62864d1e1e
fix ssl_verify_client for HTTP/0.9
2007-06-04 20:40:03 +00:00
Igor Sysoev
e60303cdca
SNI support
2007-05-29 15:21:09 +00:00
Igor Sysoev
b4ccb9f5bd
$request_time has millisecond precision
2007-04-21 07:50:19 +00:00
Igor Sysoev
3e933d2919
disable TRACE method
2007-03-30 18:59:26 +00:00
Igor Sysoev
4ddeff4956
close keep-alive connections in the shuting down processes
2007-03-19 13:20:15 +00:00
Igor Sysoev
d74b66c82c
finalize request to allow post_action
2007-02-15 18:53:48 +00:00
Igor Sysoev
9d58e4bed3
if client closes a connection prematurely, then epoll (at least
...
in Linux 2.6.16) sends EPOLLERR|EPOLLHUP|EPOLLIN only and writer
does not know about the error
2007-02-15 10:02:34 +00:00
Igor Sysoev
722231f407
ngx_strcasecmp()/ngx_strncasecmp()
2007-02-14 18:51:19 +00:00
Igor Sysoev
8b57df9480
log a real response error code instead of "0"
2007-01-29 11:53:23 +00:00
Igor Sysoev
8d6de94f5b
if client closes a connection prematurely, then epoll (at least
...
in Linux 2.6.18) sends EPOLLERR|EPOLLHUP|EPOLLIN only and writer
does not know about the error
2007-01-19 08:10:06 +00:00
Igor Sysoev
56331ba499
the "Overwrite" header line
2007-01-18 21:11:23 +00:00