fix <!--#include virtual=... wait="yes" -->

r766 did not fix the bug too
This commit is contained in:
Igor Sysoev 2006-10-11 14:33:38 +00:00
parent 35d5272e3a
commit 84b7f5ba0d

View File

@ -383,6 +383,7 @@ ngx_http_ssi_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
ngx_chain_t *cl, **ll; ngx_chain_t *cl, **ll;
ngx_table_elt_t *param; ngx_table_elt_t *param;
ngx_connection_t *c; ngx_connection_t *c;
ngx_http_request_t *pr;
ngx_http_ssi_ctx_t *ctx, *mctx; ngx_http_ssi_ctx_t *ctx, *mctx;
ngx_http_ssi_block_t *bl; ngx_http_ssi_block_t *bl;
ngx_http_ssi_param_t *prm; ngx_http_ssi_param_t *prm;
@ -411,16 +412,34 @@ ngx_http_ssi_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
} }
if (ctx->wait) { if (ctx->wait) {
if (ctx->wait != r) { if (r->connection->data != r) {
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http ssi filter \"%V\" wait", &r->uri); "http ssi filter \"%V\" wait", &r->uri);
return NGX_AGAIN; return NGX_AGAIN;
} }
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, for (pr = ctx->wait->parent; pr; pr = pr->parent) {
"http ssi filter \"%V\" continue", &r->uri); if (pr == r) {
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http ssi filter \"%V\" flush", &r->uri);
ctx->wait = NULL; rc = ngx_http_next_body_filter(r, NULL);
if (ctx->wait->done) {
ctx->wait = NULL;
}
if (rc == NGX_ERROR || rc == NGX_AGAIN) {
return rc;
}
}
}
if (ctx->wait == r) {
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http ssi filter \"%V\" continue", &r->uri);
ctx->wait = NULL;
}
} }
slcf = ngx_http_get_module_loc_conf(r, ngx_http_ssi_filter_module); slcf = ngx_http_get_module_loc_conf(r, ngx_http_ssi_filter_module);