mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -06:00
Removed r->cache/r->cached dependencies in range filter.
This is a layering violation, use correct offset calculations instead.
This commit is contained in:
parent
a113cb3543
commit
37c6228d43
@ -595,15 +595,8 @@ ngx_http_range_test_overlapped(ngx_http_request_t *r,
|
|||||||
buf = in->buf;
|
buf = in->buf;
|
||||||
|
|
||||||
if (!buf->last_buf) {
|
if (!buf->last_buf) {
|
||||||
|
start = ctx->offset;
|
||||||
if (buf->in_file) {
|
last = ctx->offset + ngx_buf_size(buf);
|
||||||
start = buf->file_pos + ctx->offset;
|
|
||||||
last = buf->file_last + ctx->offset;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
start = buf->pos - buf->start + ctx->offset;
|
|
||||||
last = buf->last - buf->start + ctx->offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
range = ctx->ranges.elts;
|
range = ctx->ranges.elts;
|
||||||
for (i = 0; i < ctx->ranges.nelts; i++) {
|
for (i = 0; i < ctx->ranges.nelts; i++) {
|
||||||
@ -716,7 +709,6 @@ static ngx_int_t
|
|||||||
ngx_http_range_multipart_body(ngx_http_request_t *r,
|
ngx_http_range_multipart_body(ngx_http_request_t *r,
|
||||||
ngx_http_range_filter_ctx_t *ctx, ngx_chain_t *in)
|
ngx_http_range_filter_ctx_t *ctx, ngx_chain_t *in)
|
||||||
{
|
{
|
||||||
off_t body_start;
|
|
||||||
ngx_buf_t *b, *buf;
|
ngx_buf_t *b, *buf;
|
||||||
ngx_uint_t i;
|
ngx_uint_t i;
|
||||||
ngx_chain_t *out, *hcl, *rcl, *dcl, **ll;
|
ngx_chain_t *out, *hcl, *rcl, *dcl, **ll;
|
||||||
@ -726,12 +718,6 @@ ngx_http_range_multipart_body(ngx_http_request_t *r,
|
|||||||
buf = in->buf;
|
buf = in->buf;
|
||||||
range = ctx->ranges.elts;
|
range = ctx->ranges.elts;
|
||||||
|
|
||||||
#if (NGX_HTTP_CACHE)
|
|
||||||
body_start = r->cached ? r->cache->body_start : 0;
|
|
||||||
#else
|
|
||||||
body_start = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (i = 0; i < ctx->ranges.nelts; i++) {
|
for (i = 0; i < ctx->ranges.nelts; i++) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -792,13 +778,13 @@ ngx_http_range_multipart_body(ngx_http_request_t *r,
|
|||||||
b->file = buf->file;
|
b->file = buf->file;
|
||||||
|
|
||||||
if (buf->in_file) {
|
if (buf->in_file) {
|
||||||
b->file_pos = body_start + range[i].start;
|
b->file_pos = buf->file_pos + range[i].start;
|
||||||
b->file_last = body_start + range[i].end;
|
b->file_last = buf->file_pos + range[i].end;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_buf_in_memory(buf)) {
|
if (ngx_buf_in_memory(buf)) {
|
||||||
b->pos = buf->start + (size_t) range[i].start;
|
b->pos = buf->pos + (size_t) range[i].start;
|
||||||
b->last = buf->start + (size_t) range[i].end;
|
b->last = buf->pos + (size_t) range[i].end;
|
||||||
}
|
}
|
||||||
|
|
||||||
dcl = ngx_alloc_chain_link(r->pool);
|
dcl = ngx_alloc_chain_link(r->pool);
|
||||||
|
Loading…
Reference in New Issue
Block a user