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