comparison src/http/modules/ngx_http_fastcgi_module.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 2eea67ed0bc2
comparison
equal deleted inserted replaced
327:cb962a94cd7b 328:26ff8d6b618d
430 ngx_http_fastcgi_loc_conf_t *flcf; 430 ngx_http_fastcgi_loc_conf_t *flcf;
431 431
432 if (r->subrequest_in_memory) { 432 if (r->subrequest_in_memory) {
433 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0, 433 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
434 "ngx_http_fastcgi_module does not support " 434 "ngx_http_fastcgi_module does not support "
435 "subrequest in memeory"); 435 "subrequest in memory");
436 return NGX_HTTP_INTERNAL_SERVER_ERROR; 436 return NGX_HTTP_INTERNAL_SERVER_ERROR;
437 } 437 }
438 438
439 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module); 439 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
440 440
503 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module); 503 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
504 504
505 if (flcf->params_len) { 505 if (flcf->params_len) {
506 ngx_memzero(&le, sizeof(ngx_http_script_engine_t)); 506 ngx_memzero(&le, sizeof(ngx_http_script_engine_t));
507 507
508 ngx_http_script_flush_no_cachable_variables(r, flcf->flushes); 508 ngx_http_script_flush_no_cacheable_variables(r, flcf->flushes);
509 le.flushed = 1; 509 le.flushed = 1;
510 510
511 le.ip = flcf->params_len->elts; 511 le.ip = flcf->params_len->elts;
512 le.request = r; 512 le.request = r;
513 513
549 } 549 }
550 550
551 551
552 if (len > 65535) { 552 if (len > 65535) {
553 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0, 553 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
554 "fastcgi: the request record is too big"); 554 "fastcgi request record is too big: %uz", len);
555 return NGX_ERROR; 555 return NGX_ERROR;
556 } 556 }
557 557
558 558
559 padding = 8 - len % 8; 559 padding = 8 - len % 8;
1184 u->headers_in.status_line.data = (u_char *) "200 OK"; 1184 u->headers_in.status_line.data = (u_char *) "200 OK";
1185 } 1185 }
1186 1186
1187 u->state->status = u->headers_in.status_n; 1187 u->state->status = u->headers_in.status_n;
1188 #if 0 1188 #if 0
1189 if (u->cachable) { 1189 if (u->cacheable) {
1190 u->cachable = ngx_http_upstream_is_cachable(r); 1190 u->cacheable = ngx_http_upstream_is_cacheable(r);
1191 } 1191 }
1192 #endif 1192 #endif
1193 1193
1194 break; 1194 break;
1195 } 1195 }
1608 ngx_http_fastcgi_add_variables(ngx_conf_t *cf) 1608 ngx_http_fastcgi_add_variables(ngx_conf_t *cf)
1609 { 1609 {
1610 ngx_http_variable_t *var; 1610 ngx_http_variable_t *var;
1611 1611
1612 var = ngx_http_add_variable(cf, &ngx_http_fastcgi_script_name, 1612 var = ngx_http_add_variable(cf, &ngx_http_fastcgi_script_name,
1613 NGX_HTTP_VAR_NOHASH|NGX_HTTP_VAR_NOCACHABLE); 1613 NGX_HTTP_VAR_NOHASH|NGX_HTTP_VAR_NOCACHEABLE);
1614 if (var == NULL) { 1614 if (var == NULL) {
1615 return NGX_ERROR; 1615 return NGX_ERROR;
1616 } 1616 }
1617 1617
1618 var->get_handler = ngx_http_fastcgi_script_name_variable; 1618 var->get_handler = ngx_http_fastcgi_script_name_variable;
2102 u_char *p; 2102 u_char *p;
2103 ngx_http_fastcgi_loc_conf_t *flcf; 2103 ngx_http_fastcgi_loc_conf_t *flcf;
2104 2104
2105 if (r->uri.len) { 2105 if (r->uri.len) {
2106 v->valid = 1; 2106 v->valid = 1;
2107 v->no_cachable = 0; 2107 v->no_cacheable = 0;
2108 v->not_found = 0; 2108 v->not_found = 0;
2109 2109
2110 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module); 2110 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
2111 2111
2112 if (r->uri.data[r->uri.len - 1] != '/') { 2112 if (r->uri.data[r->uri.len - 1] != '/') {
2126 ngx_memcpy(p, flcf->index.data, flcf->index.len); 2126 ngx_memcpy(p, flcf->index.data, flcf->index.len);
2127 2127
2128 } else { 2128 } else {
2129 v->len = 0; 2129 v->len = 0;
2130 v->valid = 1; 2130 v->valid = 1;
2131 v->no_cachable = 0; 2131 v->no_cacheable = 0;
2132 v->not_found = 0; 2132 v->not_found = 0;
2133 v->data = NULL; 2133 v->data = NULL;
2134 2134
2135 return NGX_OK; 2135 return NGX_OK;
2136 } 2136 }
2213 2213
2214 sc.cf = cf; 2214 sc.cf = cf;
2215 sc.source = &value[1]; 2215 sc.source = &value[1];
2216 sc.lengths = &flcf->upstream.store_lengths; 2216 sc.lengths = &flcf->upstream.store_lengths;
2217 sc.values = &flcf->upstream.store_values; 2217 sc.values = &flcf->upstream.store_values;
2218 sc.variables = ngx_http_script_variables_count(&value[1]);; 2218 sc.variables = ngx_http_script_variables_count(&value[1]);
2219 sc.complete_lengths = 1; 2219 sc.complete_lengths = 1;
2220 sc.complete_values = 1; 2220 sc.complete_values = 1;
2221 2221
2222 if (ngx_http_script_compile(&sc) != NGX_OK) { 2222 if (ngx_http_script_compile(&sc) != NGX_OK) {
2223 return NGX_CONF_ERROR; 2223 return NGX_CONF_ERROR;