while (*p == ' ') { p++; }
if (*p == ',' || *p == '\0') {
- range = ngx_array_push(&ctx->ranges);
- if (range == NULL) {
- return NGX_ERROR;
- }
-
- range->start = start;
- range->end = r->headers_out.content_length_n;
- size += range->end - start;
-
- if (*p++ != ',') {
- break;
- }
-
- continue;
+ end = r->headers_out.content_length_n;
+ goto found;
}
} else {
return NGX_HTTP_RANGE_NOT_SATISFIABLE;
}
- range = ngx_array_push(&ctx->ranges);
- if (range == NULL) {
- return NGX_ERROR;
- }
-
- range->start = start;
-
if (end >= r->headers_out.content_length_n) {
/*
* Download Accelerator sends the last byte position
* that equals to the file length
*/
- range->end = r->headers_out.content_length_n;
+ end = r->headers_out.content_length_n;
} else {
- range->end = end + 1;
+ end++;
}
- size += range->end - start;
+ found:
+
+ range = ngx_array_push(&ctx->ranges);
+ if (range == NULL) {
+ return NGX_ERROR;
+ }
+
+ range->start = start;
+ range->end = end;
+
+ size += end - start;
if (*p++ != ',') {
break;