if (src->pos == src->last) {
dst->flush = src->flush;
dst->last_buf = src->last_buf;
+ dst->last_in_chain = src->last_in_chain;
}
} else {
if (src->file_pos == src->file_last) {
dst->flush = src->flush;
dst->last_buf = src->last_buf;
+ dst->last_in_chain = src->last_in_chain;
}
}
return ngx_http_xslt_send(r, ctx, NULL);
}
- if (cl->buf->last_buf) {
+ if (cl->buf->last_buf || cl->buf->last_in_chain) {
ctx->doc = ctx->ctxt->myDoc;
ctx->request = r;
}
- err = xmlParseChunk(ctx->ctxt, (char *) b->pos,
- (int) (b->last - b->pos), b->last_buf);
+ err = xmlParseChunk(ctx->ctxt, (char *) b->pos, (int) (b->last - b->pos),
+ (b->last_buf) || (b->last_in_chain));
if (err == 0) {
b->pos = b->last;
b->pos = buf;
b->last = buf + len;
b->memory = 1;
- b->last_buf = 1;
if (encoding) {
r->headers_out.charset.len = ngx_strlen(encoding);
return b;
}
+ b->last_buf = 1;
+
if (type) {
len = ngx_strlen(type);