Mercurial > hg > nginx-vendor-1-0
diff src/http/ngx_http_header_filter_module.c @ 122:d25a1d6034f1 NGINX_0_3_8
nginx 0.3.8
*) Security: nginx now checks URI got from a backend in
"X-Accel-Redirect" header line or in SSI file for the "/../" paths
and zeroes.
*) Change: nginx now does not treat the empty user name in the
"Authorization" header line as valid one.
*) Feature: the "ssl_session_timeout" directives of the
ngx_http_ssl_module and ngx_imap_ssl_module.
*) Feature: the "auth_http_header" directive of the
ngx_imap_auth_http_module.
*) Feature: the "add_header" directive.
*) Feature: the ngx_http_realip_module.
*) Feature: the new variables to use in the "log_format" directive:
$bytes_sent, $apache_bytes_sent, $status, $time_gmt, $uri,
$request_time, $request_length, $upstream_status,
$upstream_response_time, $gzip_ratio, $uid_got, $uid_set,
$connection, $pipe, and $msec. The parameters in the "%name" form
will be canceled soon.
*) Change: now the false variable values in the "if" directive are the
empty string "" and string starting with "0".
*) Bugfix: while using proxied or FastCGI-server nginx may leave
connections and temporary files with client requests in open state.
*) Bugfix: the worker processes did not flush the buffered logs on
graceful exit.
*) Bugfix: if the request URI was changes by the "rewrite" directive
and the request was proxied in location given by regular expression,
then the incorrect request was transferred to backend; bug appeared
in 0.2.6.
*) Bugfix: the "expires" directive did not remove the previous
"Expires" header.
*) Bugfix: nginx may stop to accept requests if the "rtsig" method and
several worker processes were used.
*) Bugfix: the "\"" and "\'" escape symbols were incorrectly handled in
SSI commands.
*) Bugfix: if the response was ended just after the SSI command and
gzipping was used, then the response did not transferred complete or
did not transferred at all.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Wed, 09 Nov 2005 00:00:00 +0300 |
parents | 644a7935144b |
children | 36af50a5582d |
line wrap: on
line diff
--- a/src/http/ngx_http_header_filter_module.c +++ b/src/http/ngx_http_header_filter_module.c @@ -351,12 +351,12 @@ ngx_http_header_filter(ngx_http_request_ /* status line */ if (r->headers_out.status_line.len) { - b->last = ngx_cpymem(b->last, r->headers_out.status_line.data, - r->headers_out.status_line.len); + b->last = ngx_copy(b->last, r->headers_out.status_line.data, + r->headers_out.status_line.len); } else { - b->last = ngx_cpymem(b->last, ngx_http_status_lines[status].data, - ngx_http_status_lines[status].len); + b->last = ngx_copy(b->last, ngx_http_status_lines[status].data, + ngx_http_status_lines[status].len); } *b->last++ = CR; *b->last++ = LF; @@ -377,14 +377,14 @@ ngx_http_header_filter(ngx_http_request_ b->last = ngx_cpymem(b->last, "Content-Type: ", sizeof("Content-Type: ") - 1); p = b->last; - b->last = ngx_cpymem(b->last, r->headers_out.content_type.data, - r->headers_out.content_type.len); + b->last = ngx_copy(b->last, r->headers_out.content_type.data, + r->headers_out.content_type.len); if (r->headers_out.charset.len) { b->last = ngx_cpymem(b->last, "; charset=", sizeof("; charset=") - 1); - b->last = ngx_cpymem(b->last, r->headers_out.charset.data, - r->headers_out.charset.len); + b->last = ngx_copy(b->last, r->headers_out.charset.data, + r->headers_out.charset.len); /* update r->headers_out.content_type for possible logging */ @@ -428,28 +428,27 @@ ngx_http_header_filter(ngx_http_request_ #endif *b->last++ = ':'; *b->last++ = '/'; *b->last++ = '/'; - b->last = ngx_cpymem(b->last, r->server_name.data, - r->server_name.len); + b->last = ngx_copy(b->last, r->server_name.data, r->server_name.len); if (clcf->port_in_redirect) { #if (NGX_HTTP_SSL) if (r->connection->ssl) { if (r->port != 443) { - b->last = ngx_cpymem(b->last, r->port_text->data, - r->port_text->len); + b->last = ngx_copy(b->last, r->port_text->data, + r->port_text->len); } } else #endif { if (r->port != 80) { - b->last = ngx_cpymem(b->last, r->port_text->data, - r->port_text->len); + b->last = ngx_copy(b->last, r->port_text->data, + r->port_text->len); } } } - b->last = ngx_cpymem(b->last, r->headers_out.location->value.data, - r->headers_out.location->value.len); + b->last = ngx_copy(b->last, r->headers_out.location->value.data, + r->headers_out.location->value.len); /* update r->headers_out.location->value for possible logging */ @@ -497,11 +496,10 @@ ngx_http_header_filter(ngx_http_request_ continue; } - b->last = ngx_cpymem(b->last, header[i].key.data, header[i].key.len); + b->last = ngx_copy(b->last, header[i].key.data, header[i].key.len); *b->last++ = ':' ; *b->last++ = ' ' ; - b->last = ngx_cpymem(b->last, header[i].value.data, - header[i].value.len); + b->last = ngx_copy(b->last, header[i].value.data, header[i].value.len); *b->last++ = CR; *b->last++ = LF; }