comparison src/http/modules/ngx_http_fastcgi_module.c @ 340:10cc350ed8a1 NGINX_0_6_14

nginx 0.6.14 *) Change: now by default the "echo" SSI command uses entity encoding. *) Feature: the "encoding" parameter in the "echo" SSI command. *) Feature: the "access_log" directive may be used inside the "limit_except" block. *) Bugfix: if all upstream servers were failed, then all servers had got weight the was equal one until servers became alive; bug appeared in 0.6.6. *) 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. *) Bugfix: nginx supported low case only "close" and "keep-alive" values in the "Connection" request header line; bug appeared in 0.6.11. *) Bugfix: sub_filter did not work with empty substitution. *) Bugfix: in sub_filter parsing.
author Igor Sysoev <http://sysoev.ru>
date Mon, 15 Oct 2007 00:00:00 +0400
parents 1c519aff5c0c
children 05693816539c
comparison
equal deleted inserted replaced
339:d19550b67059 340:10cc350ed8a1
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
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;