From 899b44eab259f32af5c6e3da342f430c654528ce Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Thu, 12 May 2005 14:58:06 +0000 Subject: nginx-0.1.29-RELEASE import *) Feature: the ngx_http_ssi_module supports "include virtual" command. *) Feature: the ngx_http_ssi_module supports the condition command like 'if expr="$NAME"' and "else" and "endif" commands. Only one nested level is supported. *) Feature: the ngx_http_ssi_module supports the DATE_LOCAL and DATE_GMT variables and "config timefmt" command. *) Feature: the "ssi_ignore_recycled_buffers" directive. *) Bugfix: the "echo" command did not show the default value for the empty QUERY_STRING variable. *) Change: the ngx_http_proxy_module was rewritten. *) Feature: the "proxy_redirect", "proxy_pass_request_headers", "proxy_pass_request_body", and "proxy_method" directives. *) Feature: the "proxy_set_header" directive. The "proxy_x_var" was canceled and must be replaced with the proxy_set_header directive. *) Change: the "proxy_preserve_host" is canceled and must be replaced with the "proxy_set_header Host $host" and the "proxy_redirect off" directives, the "proxy_set_header Host $host:$proxy_port" directive and the appropriate proxy_redirect directives. *) Change: the "proxy_set_x_real_ip" is canceled and must be replaced with the "proxy_set_header X-Real-IP $remote_addr" directive. *) Change: the "proxy_add_x_forwarded_for" is canceled and must be replaced with the "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for" directive. *) Change: the "proxy_set_x_url" is canceled and must be replaced with the "proxy_set_header X-URL http://$host:$server_port$request_uri" directive. *) Feature: the "fastcgi_param" directive. *) Change: the "fastcgi_root", "fastcgi_set_var" and "fastcgi_params" directive are canceled and must be replaced with the fastcgi_param directives. *) Feature: the "index" directive can use the variables. *) Feature: the "index" directive can be used at http and server levels. *) Change: the last index only in the "index" directive can be absolute. *) Feature: the "rewrite" directive can use the variables. *) Feature: the "internal" directive. *) Feature: the CONTENT_LENGTH, CONTENT_TYPE, REMOTE_PORT, SERVER_ADDR, SERVER_PORT, SERVER_PROTOCOL, DOCUMENT_ROOT, SERVER_NAME, REQUEST_METHOD, REQUEST_URI, and REMOTE_USER variables. *) Change: nginx now passes the invalid lines in a client request headers or a backend response header. *) Bugfix: if the backend did not transfer response for a long time and the "send_timeout" was less than "proxy_read_timeout", then nginx returned the 408 response. *) Bugfix: the segmentation fault was occurred if the backend sent an invalid line in response header; the bug had appeared in 0.1.26. *) Bugfix: the segmentation fault may occurred in FastCGI fault tolerance configuration. *) Bugfix: the "expires" directive did not remove the previous "Expires" and "Cache-Control" headers. *) Bugfix: nginx did not take into account trailing dot in "Host" header line. *) Bugfix: the ngx_http_auth_module did not work under Linux. *) Bugfix: the rewrite directive worked incorrectly, if the arguments were in a request. *) Bugfix: nginx could not be built on MacOS X. --- src/http/modules/proxy/ngx_http_proxy_handler.c | 31 ++++++++++++++----------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'src/http/modules/proxy/ngx_http_proxy_handler.c') diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.c b/src/http/modules/proxy/ngx_http_proxy_handler.c index 12d417176..bc91df9a1 100644 --- a/src/http/modules/proxy/ngx_http_proxy_handler.c +++ b/src/http/modules/proxy/ngx_http_proxy_handler.c @@ -311,7 +311,7 @@ static ngx_http_log_op_name_t ngx_http_proxy_log_fmt_ops[] = { -ngx_http_header_t ngx_http_proxy_headers_in[] = { +ngx_http_header0_t ngx_http_proxy_headers_in[] = { { ngx_string("Date"), offsetof(ngx_http_proxy_headers_in_t, date) }, { ngx_string("Server"), offsetof(ngx_http_proxy_headers_in_t, server) }, @@ -490,13 +490,25 @@ static ngx_int_t ngx_http_proxy_cache_get(ngx_http_proxy_ctx_t *p) #endif -void ngx_http_proxy_check_broken_connection(ngx_event_t *ev) +void ngx_http_proxy_rd_check_broken_connection(ngx_http_request_t *r) +{ + ngx_http_proxy_check_broken_connection(r, r->connection->read); +} + + +void ngx_http_proxy_wr_check_broken_connection(ngx_http_request_t *r) +{ + ngx_http_proxy_check_broken_connection(r, r->connection->read); +} + + +void ngx_http_proxy_check_broken_connection(ngx_http_request_t *r, + ngx_event_t *ev) { int n; char buf[1]; ngx_err_t err; ngx_connection_t *c; - ngx_http_request_t *r; ngx_http_proxy_ctx_t *p; ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ev->log, 0, @@ -510,8 +522,7 @@ void ngx_http_proxy_check_broken_connection(ngx_event_t *ev) return; } - c = ev->data; - r = c->data; + c = r->connection; p = ngx_http_get_module_ctx(r, ngx_http_proxy_module); ev->eof = 1; @@ -542,8 +553,7 @@ void ngx_http_proxy_check_broken_connection(ngx_event_t *ev) #endif - c = ev->data; - r = c->data; + c = r->connection; p = ngx_http_get_module_ctx(r, ngx_http_proxy_module); n = recv(c->fd, buf, 1, MSG_PEEK); @@ -712,13 +722,6 @@ void ngx_http_proxy_finalize_request(ngx_http_proxy_ctx_t *p, int rc) p->cache->ctx.file.fd); } - if (p->upstream && p->upstream->event_pipe) { - r->file.fd = p->upstream->event_pipe->temp_file->file.fd; - - } else if (p->cache) { - r->file.fd = p->cache->ctx.file.fd; - } - if (rc == 0 && r->main == NULL) { rc = ngx_http_send_last(r); } -- cgit