*) fix of r4060: start value should be tested after the "found" label; *) optimization: start value may be tested against end value only, since end value here may not be greater than content_length.
diff --git a/src/http/modules/ngx_http_range_filter_module.c b/src/http/modules/ngx_http_range_filter_module.c index 55a37d4..3e416b3 100644 --- a/src/http/modules/ngx_http_range_filter_module.c +++ b/src/http/modules/ngx_http_range_filter_module.c
@@ -295,10 +295,6 @@ end = content_length - 1; } - if (start >= content_length || start > end) { - goto skip; - } - if (end >= content_length) { end = content_length; @@ -308,18 +304,18 @@ found: - range = ngx_array_push(&ctx->ranges); - if (range == NULL) { - return NGX_ERROR; + if (start < end) { + range = ngx_array_push(&ctx->ranges); + if (range == NULL) { + return NGX_ERROR; + } + + range->start = start; + range->end = end; + + size += end - start; } - range->start = start; - range->end = end; - - size += end - start; - - skip: - if (*p++ != ',') { break; }