Mercurial > hg > nginx
changeset 3773:a08e8b3832ae
gzip_disable degradation
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 04 Oct 2010 15:03:00 +0000 |
parents | c1e3cb4c669c |
children | 5ceb0f624233 |
files | auto/modules src/http/modules/ngx_http_gzip_filter_module.c src/http/ngx_http_core_module.c src/http/ngx_http_core_module.h |
diffstat | 4 files changed, 61 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/auto/modules Mon Oct 04 14:59:41 2010 +0000 +++ b/auto/modules Mon Oct 04 15:03:00 2010 +0000 @@ -322,6 +322,7 @@ fi if [ $HTTP_DEGRADATION = YES ]; then + have=NGX_HTTP_DEGRADATION . auto/have HTTP_MODULES="$HTTP_MODULES $HTTP_DEGRADATION_MODULE" HTTP_SRCS="$HTTP_SRCS $HTTP_DEGRADATION_SRCS" fi
--- a/src/http/modules/ngx_http_gzip_filter_module.c Mon Oct 04 14:59:41 2010 +0000 +++ b/src/http/modules/ngx_http_gzip_filter_module.c Mon Oct 04 15:03:00 2010 +0000 @@ -258,6 +258,18 @@ r->gzip_vary = 1; +#if (NGX_HTTP_DEGRADATION) + { + ngx_http_core_loc_conf_t *clcf; + + clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); + + if (clcf->gzip_disable_degradation && ngx_http_degraded(r)) { + return ngx_http_next_header_filter(r); + } + } +#endif + if (!r->gzip_tested) { if (ngx_http_gzip_ok(r) != NGX_OK) { return ngx_http_next_header_filter(r);
--- a/src/http/ngx_http_core_module.c Mon Oct 04 14:59:41 2010 +0000 +++ b/src/http/ngx_http_core_module.c Mon Oct 04 15:03:00 2010 +0000 @@ -3113,6 +3113,9 @@ clcf->gzip_disable = NGX_CONF_UNSET_PTR; #endif clcf->gzip_disable_msie6 = 3; +#if (NGX_HTTP_DEGRADATION) + clcf->gzip_disable_degradation = 3; +#endif #endif return clcf; @@ -3373,6 +3376,15 @@ (prev->gzip_disable_msie6 == 3) ? 0 : prev->gzip_disable_msie6; } +#if (NGX_HTTP_DEGRADATION) + + if (conf->gzip_disable_degradation == 3) { + conf->gzip_disable_degradation = + (prev->gzip_disable_degradation == 3) ? + 0 : prev->gzip_disable_degradation; + } + +#endif #endif return NGX_CONF_OK; @@ -4394,6 +4406,15 @@ continue; } +#if (NGX_HTTP_DEGRADATION) + + if (ngx_strcmp(value[i].data, "degradation") == 0) { + clcf->gzip_disable_degradation = 1; + continue; + } + +#endif + re = ngx_array_push(clcf->gzip_disable); if (re == NULL) { return NGX_CONF_ERROR; @@ -4414,20 +4435,35 @@ return NGX_CONF_OK; #else - ngx_str_t *value; + ngx_str_t *value; + ngx_uint_t i; value = cf->args->elts; - if (cf->args->nelts == 2 && ngx_strcmp(value[1].data, "msie6") == 0) { - clcf->gzip_disable_msie6 = 1; - return NGX_CONF_OK; + for (i = 1; i < cf->args->nelts; i++) { + if (ngx_strcmp(value[i].data, "msie6") == 0) { + clcf->gzip_disable_msie6 = 1; + continue; + } + +#if (NGX_HTTP_DEGRADATION) + + if (ngx_strcmp(value[i].data, "degradation") == 0) { + clcf->gzip_disable_degradation = 1; + continue; + } + +#endif + + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "without PCRE library \"gzip_disable\" supports " + "builtin \"msie6\" and \"degradation\" mask only"); + + return NGX_CONF_ERROR; } - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "without PCRE library \"gzip_disable\" supports " - "builtin \"msie6\" mask only"); - - return NGX_CONF_ERROR; + return NGX_CONF_OK; + #endif }
--- a/src/http/ngx_http_core_module.h Mon Oct 04 14:59:41 2010 +0000 +++ b/src/http/ngx_http_core_module.h Mon Oct 04 15:03:00 2010 +0000 @@ -295,6 +295,9 @@ unsigned auto_redirect:1; #if (NGX_HTTP_GZIP) unsigned gzip_disable_msie6:2; +#if (NGX_HTTP_DEGRADATION) + unsigned gzip_disable_degradation:2; +#endif #endif ngx_http_location_tree_node_t *static_locations;