Mercurial > hg > nginx-ranges
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; |