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);
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;
(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;
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;
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_OK;
- return NGX_CONF_ERROR;
#endif
}