diff options
| author | Maxim Dounin <mdounin@mdounin.ru> | 2012-12-21 15:07:45 +0000 |
|---|---|---|
| committer | Maxim Dounin <mdounin@mdounin.ru> | 2012-12-21 15:07:45 +0000 |
| commit | f25549210d230d5e6bb3ebb81dac897b8d35f113 (patch) | |
| tree | 3cedcc1cf3f1d626b376ec3d3423bd31cc247ee2 | |
| parent | f1819242fcf83ef79808a552d83ffec51713856d (diff) | |
| download | nginx-f25549210d230d5e6bb3ebb81dac897b8d35f113.tar.gz nginx-f25549210d230d5e6bb3ebb81dac897b8d35f113.tar.bz2 | |
Image filter: fixed image_filter rotate inheritance.
Configurations like
location /i/ {
image_filter resize 200 200;
image_filter rotate 180;
location /i/foo/ {
image_filter resize 200 200;
}
}
resulted in rotation incorrectly applied in the location /i/foo, without
any way to clear it. Fix is to handle conf->angle/conf->acv consistently
with other filter variables and do not try to inherit them if there are
transformations defined for current location.
Diffstat (limited to '')
| -rw-r--r-- | src/http/modules/ngx_http_image_filter_module.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/http/modules/ngx_http_image_filter_module.c b/src/http/modules/ngx_http_image_filter_module.c index 823cf0ea3..1550aeecb 100644 --- a/src/http/modules/ngx_http_image_filter_module.c +++ b/src/http/modules/ngx_http_image_filter_module.c @@ -1169,10 +1169,22 @@ ngx_http_image_filter_create_conf(ngx_conf_t *cf) return NULL; } + /* + * set by ngx_pcalloc(): + * + * conf->width = 0; + * conf->height = 0; + * conf->angle = 0; + * conf->wcv = NULL; + * conf->hcv = NULL; + * conf->acv = NULL; + * conf->jqcv = NULL; + * conf->shcv = NULL; + */ + conf->filter = NGX_CONF_UNSET_UINT; conf->jpeg_quality = NGX_CONF_UNSET_UINT; conf->sharpen = NGX_CONF_UNSET_UINT; - conf->angle = NGX_CONF_UNSET_UINT; conf->transparency = NGX_CONF_UNSET; conf->buffer_size = NGX_CONF_UNSET_SIZE; @@ -1195,8 +1207,10 @@ ngx_http_image_filter_merge_conf(ngx_conf_t *cf, void *parent, void *child) conf->filter = prev->filter; conf->width = prev->width; conf->height = prev->height; + conf->angle = prev->angle; conf->wcv = prev->wcv; conf->hcv = prev->hcv; + conf->acv = prev->acv; } } @@ -1218,14 +1232,6 @@ ngx_http_image_filter_merge_conf(ngx_conf_t *cf, void *parent, void *child) } } - if (conf->angle == NGX_CONF_UNSET_UINT) { - ngx_conf_merge_uint_value(conf->angle, prev->angle, 0); - - if (conf->acv == NULL) { - conf->acv = prev->acv; - } - } - ngx_conf_merge_value(conf->transparency, prev->transparency, 1); ngx_conf_merge_size_value(conf->buffer_size, prev->buffer_size, |
