comparison src/http/modules/ngx_http_fastcgi_module.c @ 496:116d5de7cbb6 NGINX_0_7_60

nginx 0.7.60 *) Feature: the "updating" parameter in "proxy_cache_use_stale" and "fastcgi_cache_use_stale" directives. *) Feature: the "keepalive_requests" directive. *) Bugfix: in open_file_cache and proxy/fastcgi cache interaction on start up. *) Bugfix: open_file_cache might cache open file descriptors too long. *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request header lines were passed to backend while caching if no "proxy_set_header" directive was used with any parameters. *) Bugfix: the "Set-Cookie" and "P3P" response header lines were not hidden while caching if no "proxy_hide_header/fastcgi_hide_header" directives were used with any parameters. *) Bugfix: the ngx_http_image_filter_module did not support GIF87a format. Thanks to Denis Ilyinyh. *) Bugfix: nginx could not be built modules on Solaris 10 and early; the bug had appeared in 0.7.56. *) Bugfix: XLST filter did not work in subrequests. *) Bugfix: in relative paths handling in nginx/Windows. *) Bugfix: in proxy_store, fastcgi_store, proxy_cache, and fastcgi_cache in nginx/Windows.
author Igor Sysoev <http://sysoev.ru>
date Mon, 15 Jun 2009 00:00:00 +0400
parents 499474178a11
children ed3d382670c7
comparison
equal deleted inserted replaced
495:6d9fb4461113 496:116d5de7cbb6
176 { ngx_string("timeout"), NGX_HTTP_UPSTREAM_FT_TIMEOUT }, 176 { ngx_string("timeout"), NGX_HTTP_UPSTREAM_FT_TIMEOUT },
177 { ngx_string("invalid_header"), NGX_HTTP_UPSTREAM_FT_INVALID_HEADER }, 177 { ngx_string("invalid_header"), NGX_HTTP_UPSTREAM_FT_INVALID_HEADER },
178 { ngx_string("http_500"), NGX_HTTP_UPSTREAM_FT_HTTP_500 }, 178 { ngx_string("http_500"), NGX_HTTP_UPSTREAM_FT_HTTP_500 },
179 { ngx_string("http_503"), NGX_HTTP_UPSTREAM_FT_HTTP_503 }, 179 { ngx_string("http_503"), NGX_HTTP_UPSTREAM_FT_HTTP_503 },
180 { ngx_string("http_404"), NGX_HTTP_UPSTREAM_FT_HTTP_404 }, 180 { ngx_string("http_404"), NGX_HTTP_UPSTREAM_FT_HTTP_404 },
181 { ngx_string("updating"), NGX_HTTP_UPSTREAM_FT_UPDATING },
181 { ngx_string("off"), NGX_HTTP_UPSTREAM_FT_OFF }, 182 { ngx_string("off"), NGX_HTTP_UPSTREAM_FT_OFF },
182 { ngx_null_string, 0 } 183 { ngx_null_string, 0 }
183 }; 184 };
184 185
185 186
1909 ngx_http_script_compile_t sc; 1910 ngx_http_script_compile_t sc;
1910 ngx_http_script_copy_code_t *copy; 1911 ngx_http_script_copy_code_t *copy;
1911 1912
1912 if (conf->upstream.store != 0) { 1913 if (conf->upstream.store != 0) {
1913 ngx_conf_merge_value(conf->upstream.store, 1914 ngx_conf_merge_value(conf->upstream.store,
1914 prev->upstream.store, 0); 1915 prev->upstream.store, 0);
1915 1916
1916 if (conf->upstream.store_lengths == NULL) { 1917 if (conf->upstream.store_lengths == NULL) {
1917 conf->upstream.store_lengths = prev->upstream.store_lengths; 1918 conf->upstream.store_lengths = prev->upstream.store_lengths;
1918 conf->upstream.store_values = prev->upstream.store_values; 1919 conf->upstream.store_values = prev->upstream.store_values;
1919 } 1920 }
2539 ngx_http_fastcgi_loc_conf_t *flcf = conf; 2540 ngx_http_fastcgi_loc_conf_t *flcf = conf;
2540 2541
2541 ngx_str_t *value; 2542 ngx_str_t *value;
2542 ngx_http_script_compile_t sc; 2543 ngx_http_script_compile_t sc;
2543 2544
2544 if (flcf->upstream.store != NGX_CONF_UNSET || flcf->upstream.store_lengths) 2545 if (flcf->upstream.store != NGX_CONF_UNSET
2546 || flcf->upstream.store_lengths)
2545 { 2547 {
2546 return "is duplicate"; 2548 return "is duplicate";
2547 } 2549 }
2548 2550
2549 value = cf->args->elts; 2551 value = cf->args->elts;
2550 2552
2553 if (ngx_strcmp(value[1].data, "off") == 0) {
2554 flcf->upstream.store = 0;
2555 return NGX_CONF_OK;
2556 }
2557
2558 #if (NGX_HTTP_CACHE)
2559
2560 if (flcf->upstream.cache != NGX_CONF_UNSET_PTR
2561 && flcf->upstream.cache != NULL)
2562 {
2563 return "is incompatible with \"fastcgi_cache\"";
2564 }
2565
2566 #endif
2567
2551 if (ngx_strcmp(value[1].data, "on") == 0) { 2568 if (ngx_strcmp(value[1].data, "on") == 0) {
2552 flcf->upstream.store = 1; 2569 flcf->upstream.store = 1;
2553 return NGX_CONF_OK;
2554 }
2555
2556 if (ngx_strcmp(value[1].data, "off") == 0) {
2557 flcf->upstream.store = 0;
2558 return NGX_CONF_OK; 2570 return NGX_CONF_OK;
2559 } 2571 }
2560 2572
2561 /* include the terminating '\0' into script */ 2573 /* include the terminating '\0' into script */
2562 value[1].len++; 2574 value[1].len++;
2595 } 2607 }
2596 2608
2597 if (ngx_strcmp(value[1].data, "off") == 0) { 2609 if (ngx_strcmp(value[1].data, "off") == 0) {
2598 flcf->upstream.cache = NULL; 2610 flcf->upstream.cache = NULL;
2599 return NGX_CONF_OK; 2611 return NGX_CONF_OK;
2612 }
2613
2614 if (flcf->upstream.store > 0 || flcf->upstream.store_lengths) {
2615 return "is incompatible with \"fastcgi_store\"";
2600 } 2616 }
2601 2617
2602 flcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0, 2618 flcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
2603 &ngx_http_fastcgi_module); 2619 &ngx_http_fastcgi_module);
2604 if (flcf->upstream.cache == NULL) { 2620 if (flcf->upstream.cache == NULL) {