mirror of
https://github.com/nginx/nginx.git
synced 2024-11-27 23:49:00 +08:00
Addition filter: set last_in_chain flag when clearing last_buf.
When the last_buf flag is cleared for add_after_body to append more data from a subrequest, other filters may still have buffered data, which should be flushed at this point. For example, the sub_filter may have a partial match buffered, which will only be flushed after the subrequest is done, ending up with interleaved data in output. Setting last_in_chain instead of last_buf flushes the data and fixes the order of output buffers.
This commit is contained in:
parent
200c7493ae
commit
e19481f35e
@ -171,6 +171,7 @@ ngx_http_addition_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
|
|||||||
for (cl = in; cl; cl = cl->next) {
|
for (cl = in; cl; cl = cl->next) {
|
||||||
if (cl->buf->last_buf) {
|
if (cl->buf->last_buf) {
|
||||||
cl->buf->last_buf = 0;
|
cl->buf->last_buf = 0;
|
||||||
|
cl->buf->last_in_chain = 1;
|
||||||
cl->buf->sync = 1;
|
cl->buf->sync = 1;
|
||||||
last = 1;
|
last = 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user