mirror of
https://github.com/nginx/nginx.git
synced 2024-12-12 18:29:00 +08:00
Upstream: r->upstream->length type change to off_t.
Previous use of size_t may cause wierd effects on 32bit platforms with certain big responses transferred in unbuffered mode. Nuke "if (size > u->length)" check as it's not usefull anyway (preread body data isn't subject to this check) and now requires additional check for u->length being positive.
This commit is contained in:
parent
e19f005daf
commit
ffe4f11417
@ -407,7 +407,7 @@ ngx_http_memcached_filter(void *data, ssize_t bytes)
|
||||
u = ctx->request->upstream;
|
||||
b = &u->buffer;
|
||||
|
||||
if (u->length == ctx->rest) {
|
||||
if (u->length == (ssize_t) ctx->rest) {
|
||||
|
||||
if (ngx_strncmp(b->last,
|
||||
ngx_http_memcached_end + NGX_HTTP_MEMCACHED_END - ctx->rest,
|
||||
|
@ -1942,12 +1942,7 @@ ngx_http_upstream_process_headers(ngx_http_request_t *r, ngx_http_upstream_t *u)
|
||||
|
||||
r->headers_out.content_length_n = u->headers_in.content_length_n;
|
||||
|
||||
if (u->headers_in.content_length_n != -1) {
|
||||
u->length = (size_t) u->headers_in.content_length_n;
|
||||
|
||||
} else {
|
||||
u->length = NGX_MAX_SIZE_T_VALUE;
|
||||
}
|
||||
u->length = u->headers_in.content_length_n;
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
@ -2419,10 +2414,6 @@ ngx_http_upstream_process_non_buffered_request(ngx_http_request_t *r,
|
||||
|
||||
size = b->end - b->last;
|
||||
|
||||
if (size > u->length) {
|
||||
size = u->length;
|
||||
}
|
||||
|
||||
if (size && upstream->read->ready) {
|
||||
|
||||
n = upstream->recv(upstream, b->last, size);
|
||||
@ -2519,7 +2510,7 @@ ngx_http_upstream_non_buffered_filter(void *data, ssize_t bytes)
|
||||
cl->buf->last = b->last;
|
||||
cl->buf->tag = u->output.tag;
|
||||
|
||||
if (u->length == NGX_MAX_SIZE_T_VALUE) {
|
||||
if (u->length == -1) {
|
||||
return NGX_OK;
|
||||
}
|
||||
|
||||
|
@ -267,7 +267,7 @@ struct ngx_http_upstream_s {
|
||||
ngx_http_upstream_resolved_t *resolved;
|
||||
|
||||
ngx_buf_t buffer;
|
||||
size_t length;
|
||||
off_t length;
|
||||
|
||||
ngx_chain_t *out_bufs;
|
||||
ngx_chain_t *busy_bufs;
|
||||
|
Loading…
Reference in New Issue
Block a user