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
034ca0309c
commit
ecd3b1bb1e
1 changed files with 1 additions and 0 deletions
|
@ -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 a new issue