Mercurial > hg > nginx-vendor-0-5
comparison src/http/ngx_http_script.c @ 328:26ff8d6b618d NGINX_0_5_34
nginx 0.5.34
*) Change: now the full request line instead of URI only is written to
error_log.
*) Feature: Cygwin compatibility.
Thanks to Vladimir Kutakov.
*) Feature: the "merge_slashes" directive.
*) Feature: the "gzip_vary" directive.
*) Feature: the "server_tokens" directive.
*) Feature: the "access_log" directive may be used inside the
"limit_except" block.
*) Bugfix: if the $server_protocol was used in FastCGI parameters and a
request line length was near to the "client_header_buffer_size"
directive value, then nginx issued an alert "fastcgi: the request
record is too big".
*) Bugfix: if a plain text HTTP/0.9 version request was made to HTTPS
server, then nginx returned usual response.
*) Bugfix: URL double escaping in a redirect of the "msie_refresh"
directive; bug appeared in 0.5.28.
*) Bugfix: a segmentation fault might occur in worker process if
subrequests were used.
*) Bugfix: the big responses may be transferred truncated if SSL and
gzip were used.
*) Bugfix: compatibility with mget.
*) Bugfix: nginx did not unescape URI in the "include" SSI command.
*) Bugfix: the segmentation fault was occurred on start or while
reconfiguration if variable was used in the "charset" or
"source_charset" directives.
*) Bugfix: nginx returned the 400 response on requests like
"GET http://www.domain.com HTTP/1.0".
Thanks to James Oakley.
*) Bugfix: a segmentation fault occurred in worker process if
$date_local and $date_gmt were used outside the
ngx_http_ssi_filter_module.
*) Bugfix: a segmentation fault might occur in worker process if debug
log was enabled.
Thanks to Andrei Nigmatulin.
*) Bugfix: ngx_http_memcached_module did not set
$upstream_response_time.
Thanks to Maxim Dounin.
*) Bugfix: a worker process may got caught in an endless loop, if the
memcached was used.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Thu, 13 Dec 2007 00:00:00 +0300 |
parents | 7cf404023f50 |
children |
comparison
equal
deleted
inserted
replaced
327:cb962a94cd7b | 328:26ff8d6b618d |
---|---|
312 ngx_http_core_main_conf_t *cmcf; | 312 ngx_http_core_main_conf_t *cmcf; |
313 | 313 |
314 cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module); | 314 cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module); |
315 | 315 |
316 for (i = 0; i < cmcf->variables.nelts; i++) { | 316 for (i = 0; i < cmcf->variables.nelts; i++) { |
317 if (r->variables[i].no_cachable) { | 317 if (r->variables[i].no_cacheable) { |
318 r->variables[i].valid = 0; | 318 r->variables[i].valid = 0; |
319 r->variables[i].not_found = 0; | 319 r->variables[i].not_found = 0; |
320 } | 320 } |
321 } | 321 } |
322 | 322 |
349 return e.pos; | 349 return e.pos; |
350 } | 350 } |
351 | 351 |
352 | 352 |
353 void | 353 void |
354 ngx_http_script_flush_no_cachable_variables(ngx_http_request_t *r, | 354 ngx_http_script_flush_no_cacheable_variables(ngx_http_request_t *r, |
355 ngx_array_t *indices) | 355 ngx_array_t *indices) |
356 { | 356 { |
357 ngx_uint_t n, *index; | 357 ngx_uint_t n, *index; |
358 | 358 |
359 if (indices) { | 359 if (indices) { |
360 index = indices->elts; | 360 index = indices->elts; |
361 for (n = 0; n < indices->nelts; n++) { | 361 for (n = 0; n < indices->nelts; n++) { |
362 if (r->variables[index[n]].no_cachable) { | 362 if (r->variables[index[n]].no_cacheable) { |
363 r->variables[index[n]].valid = 0; | 363 r->variables[index[n]].valid = 0; |
364 r->variables[index[n]].not_found = 0; | 364 r->variables[index[n]].not_found = 0; |
365 } | 365 } |
366 } | 366 } |
367 } | 367 } |
748 if (code->redirect) { | 748 if (code->redirect) { |
749 | 749 |
750 dst = e->buf.data; | 750 dst = e->buf.data; |
751 src = e->buf.data; | 751 src = e->buf.data; |
752 | 752 |
753 ngx_unescape_uri(&dst, &src, e->pos - e->buf.data, NGX_UNESCAPE_URI); | 753 ngx_unescape_uri(&dst, &src, e->pos - e->buf.data, |
754 NGX_UNESCAPE_REDIRECT); | |
754 | 755 |
755 if (src < e->pos) { | 756 if (src < e->pos) { |
756 dst = ngx_copy(dst, src, e->pos - src); | 757 dst = ngx_copy(dst, src, e->pos - src); |
757 } | 758 } |
758 | 759 |
1123 | 1124 |
1124 e->sp->len = code->text_len; | 1125 e->sp->len = code->text_len; |
1125 e->sp->data = (u_char *) code->text_data; | 1126 e->sp->data = (u_char *) code->text_data; |
1126 | 1127 |
1127 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, e->request->connection->log, 0, | 1128 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, e->request->connection->log, 0, |
1128 "http script value: \"%V\"", e->sp); | 1129 "http script value: \"%v\"", e->sp); |
1129 | 1130 |
1130 e->sp++; | 1131 e->sp++; |
1131 } | 1132 } |
1132 | 1133 |
1133 | 1134 |
1148 | 1149 |
1149 e->sp--; | 1150 e->sp--; |
1150 | 1151 |
1151 r->variables[code->index].len = e->sp->len; | 1152 r->variables[code->index].len = e->sp->len; |
1152 r->variables[code->index].valid = 1; | 1153 r->variables[code->index].valid = 1; |
1153 r->variables[code->index].no_cachable = 0; | 1154 r->variables[code->index].no_cacheable = 0; |
1154 r->variables[code->index].not_found = 0; | 1155 r->variables[code->index].not_found = 0; |
1155 r->variables[code->index].data = e->sp->data; | 1156 r->variables[code->index].data = e->sp->data; |
1156 } | 1157 } |
1157 | 1158 |
1158 | 1159 |