Mercurial > hg > nginx-vendor-0-7
comparison src/http/ngx_http_request_body.c @ 506:b9fdcaf2062b NGINX_0_7_65
nginx 0.7.65
*) Security: now nginx/Windows ignores trailing spaces in URI.
Thanks to Dan Crowley, Core Security Technologies.
*) Security: now nginx/Windows ignores short files names.
Thanks to Dan Crowley, Core Security Technologies.
*) Change: now the "009" status code is written to an access log for
proxied HTTP/0.9 responses.
*) Change: now the default buffer size of the
"large_client_header_buffers" directive is 8K.
Thanks to Andrew Cholakian.
*) Change: now default SSL ciphers are "HIGH:!ADH:!MD5".
*) Change: now SSLv2 protocol is disabled by default.
*) Change: now $host variable value is always low case.
*) Feature: the conf/fastcgi.conf for simple FastCGI configurations.
*) Feature: now URI part is not required a "proxy_pass" directive if
variables are used.
*) Feature: the $ssl_session_id variable.
*) Bugfix: if a proxied or FastCGI request was internally redirected to
another proxied or FastCGI location, then $upstream_response_time
variable may have abnormally large value; the bug had appeared in
0.7.63.
*) Bugfix: if the "expires modified" set date in the past, then a
negative number was set in the "Cache-Control" response header
line.
Thanks to Alex Kapranoff.
*) Bugfix: nginx closed a connection if a cached response had an empty
body.
Thanks to Piotr Sikora.
*) Bugfix: nginx cached a 304 response if there was the "If-None-Match"
header line in a proxied request.
Thanks to Tim Dettrick and David Kostal.
*) Bugfix: nginx did not treat a comma as separator in the
"Cache-Control" backend response header line.
*) Bugfix: cached HTTP/0.9 responses were handled incorrectly.
*) Bugfix: nginx sent gzipped responses to clients those do not support
gzip, if "gzip_static on" and "gzip_vary off"; the bug had appeared
in 0.8.16.
*) Bugfix: nginx always added "Content-Encoding: gzip" response header
line in 304 responses sent by ngx_http_gzip_static_module.
*) Bugfix: the "!-x" operator did not work.
Thanks to Maxim Dounin.
*) Bugfix: a segmentation fault might occur in a worker process, if
limit_rate was used in HTTPS server.
Thanks to Maxim Dounin.
*) Bugfix: a segmentation fault might occur in a worker process while
$limit_rate logging.
Thanks to Maxim Dounin.
*) Bugfix: nginx did not support dates in 2038 year on 32-bit platforms;
*) Bugfix: nginx/Windows tried to delete a temporary file twice if the
file should replace an already existent file.
*) Bugfix: nginx/Windows tried to rename a temporary file twice if the
file should replace an already existent file.
*) Bugfix: nginx/Windows might not create temporary file, a cache file,
or "proxy/fastcgi_store"d file if a worker had no enough access
rights for top level directories.
*) Bugfix: in UTF-8 encoding support by "try_files" directive in
nginx/Windows.
*) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module.
Thanks to Maxim Dounin.
*) Bugfix: the ngx_http_autoindex_module did not show the trailing
slash in links to a directory; the bug had appeared in 0.7.15.
*) Bugfix: nginx did not close a log file set by the --error-log-path
configuration option; the bug had appeared in 0.7.53.
*) Bugfix: "addition_types" directive was incorrectly named
"addtion_types".
*) Bugfix: invalid request line in $request variable was written in
access_log only if error_log was set to "info" or "debug" level.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 01 Feb 2010 00:00:00 +0000 |
parents | ce4f9ff90bfa |
children |
comparison
equal
deleted
inserted
replaced
505:c62da3dcc544 | 506:b9fdcaf2062b |
---|---|
456 | 456 |
457 size = r->header_in->last - r->header_in->pos; | 457 size = r->header_in->last - r->header_in->pos; |
458 | 458 |
459 if (size) { | 459 if (size) { |
460 if (r->headers_in.content_length_n > size) { | 460 if (r->headers_in.content_length_n > size) { |
461 r->header_in->pos += size; | |
461 r->headers_in.content_length_n -= size; | 462 r->headers_in.content_length_n -= size; |
462 | 463 |
463 } else { | 464 } else { |
464 r->header_in->pos += (size_t) r->headers_in.content_length_n; | 465 r->header_in->pos += (size_t) r->headers_in.content_length_n; |
465 r->headers_in.content_length_n = 0; | 466 r->headers_in.content_length_n = 0; |
557 u_char buffer[NGX_HTTP_DISCARD_BUFFER_SIZE]; | 558 u_char buffer[NGX_HTTP_DISCARD_BUFFER_SIZE]; |
558 | 559 |
559 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, | 560 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, |
560 "http read discarded body"); | 561 "http read discarded body"); |
561 | 562 |
562 do { | 563 for ( ;; ) { |
563 if (r->headers_in.content_length_n == 0) { | 564 if (r->headers_in.content_length_n == 0) { |
564 r->read_event_handler = ngx_http_block_reading; | 565 r->read_event_handler = ngx_http_block_reading; |
565 return NGX_OK; | 566 return NGX_OK; |
566 } | 567 } |
567 | 568 |
569 if (!r->connection->read->ready) { | |
570 return NGX_AGAIN; | |
571 } | |
572 | |
568 size = (r->headers_in.content_length_n > NGX_HTTP_DISCARD_BUFFER_SIZE) ? | 573 size = (r->headers_in.content_length_n > NGX_HTTP_DISCARD_BUFFER_SIZE) ? |
569 NGX_HTTP_DISCARD_BUFFER_SIZE: | 574 NGX_HTTP_DISCARD_BUFFER_SIZE: |
570 (size_t) r->headers_in.content_length_n; | 575 (size_t) r->headers_in.content_length_n; |
571 | 576 |
572 n = r->connection->recv(r->connection, buffer, size); | 577 n = r->connection->recv(r->connection, buffer, size); |
583 if (n == 0) { | 588 if (n == 0) { |
584 return NGX_OK; | 589 return NGX_OK; |
585 } | 590 } |
586 | 591 |
587 r->headers_in.content_length_n -= n; | 592 r->headers_in.content_length_n -= n; |
588 | 593 } |
589 } while (r->connection->read->ready); | |
590 | |
591 return NGX_AGAIN; | |
592 } | 594 } |
593 | 595 |
594 | 596 |
595 static ngx_int_t | 597 static ngx_int_t |
596 ngx_http_test_expect(ngx_http_request_t *r) | 598 ngx_http_test_expect(ngx_http_request_t *r) |