mirror of
https://github.com/nginx/nginx.git
synced 2024-11-24 21:59:06 +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
f3bbd1c87f
commit
967ebbec32
@ -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) {
|
||||
if (cl->buf->last_buf) {
|
||||
cl->buf->last_buf = 0;
|
||||
cl->buf->last_in_chain = 1;
|
||||
cl->buf->sync = 1;
|
||||
last = 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user