[bugfix] Range filter: more appropriate restriction on max ranges.
胡聪 (hucc)
hucong.c at foxmail.com
Thu Nov 9 17:08:58 UTC 2017
Hi,
On Thursday, Nov 9, 2017 10:18 PM +0300, Maxim Dounin wrote:
>On Fri, Oct 27, 2017 at 06:48:52PM +0800, 胡聪 (hucc) wrote:
>
>> # HG changeset patch
>> # User hucongcong <hucong.c at foxmail.com>
>> # Date 1509099660 -28800
>> # Fri Oct 27 18:21:00 2017 +0800
>> # Node ID b9850d3deb277bd433a689712c40a84401443520
>> # Parent 9ef704d8563af4aff6817ab1c694fb40591f20b3
>> Range filter: more appropriate restriction on max ranges.
>>
>> diff -r 9ef704d8563a -r b9850d3deb27 src/http/modules/ngx_http_range_filter_module.c
>> --- a/src/http/modules/ngx_http_range_filter_module.c Tue Oct 17 19:52:16 2017 +0300
>> +++ b/src/http/modules/ngx_http_range_filter_module.c Fri Oct 27 18:21:00 2017 +0800
>> @@ -369,6 +369,11 @@ ngx_http_range_parse(ngx_http_request_t
>> found:
>>
>> if (start < end) {
>> +
>> + if (ranges-- == 0) {
>> + return NGX_DECLINED;
>> + }
>> +
>> range = ngx_array_push(&ctx->ranges);
>> if (range == NULL) {
>> return NGX_ERROR;
>> @@ -383,10 +388,6 @@ ngx_http_range_parse(ngx_http_request_t
>>
>> size += end - start;
>>
>> - if (ranges-- == 0) {
>> - return NGX_DECLINED;
>> - }
>> -
>> } else if (start == 0) {
>> return NGX_DECLINED;
>> }
>
>There is no real difference, and the current code looks slightly
>more readable for me, so I would rather leave it as is.
We assume that max_ranges is configured as 1, CL is the length of
representation and is equal to NGX_MAX_OFF_T_VALUE. Based on this,
416 will be returned if the byte-range-set is '0-9, 7-CL';
and 200 will be returned if the byte-range-set is '0-9, 7-100'.
This is the difference, although the situation is rare, but it exists.
I knew that the current code is slightly more readable. The problem
here is consistency and predictability from user point of view, which
is the rule I learned from
http://mailman.nginx.org/pipermail/nginx-devel/2017-March/009687.html.
Not to mention that correctness is more important than readability
from server (nginx) point of view.
More information about the nginx-devel
mailing list