diff src/http/modules/ngx_http_ssi_filter_module.c @ 246:b52bd034c577 NGINX_0_4_8

nginx 0.4.8 *) Bugfix: if an "include" SSI command were before another "include" SSI command with an "wait" parameter, then the "wait" parameter might not work. *) Bugfix: the ngx_http_flv_module added the FLV header to the full responses. Thanks to Alexey Kovyrin.
author Igor Sysoev <http://sysoev.ru>
date Wed, 11 Oct 2006 00:00:00 +0400
parents 500a3242dff6
children acd2ec3541cb
line wrap: on
line diff
--- a/src/http/modules/ngx_http_ssi_filter_module.c
+++ b/src/http/modules/ngx_http_ssi_filter_module.c
@@ -383,6 +383,7 @@ ngx_http_ssi_body_filter(ngx_http_reques
     ngx_chain_t               *cl, **ll;
     ngx_table_elt_t           *param;
     ngx_connection_t          *c;
+    ngx_http_request_t        *pr;
     ngx_http_ssi_ctx_t        *ctx, *mctx;
     ngx_http_ssi_block_t      *bl;
     ngx_http_ssi_param_t      *prm;
@@ -417,6 +418,23 @@ ngx_http_ssi_body_filter(ngx_http_reques
             return NGX_AGAIN;
         }
 
+        for (pr = ctx->wait->parent; pr; pr = pr->parent) {
+            if (pr == r) {
+                ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+                               "http ssi filter \"%V\" flush", &r->uri);
+
+                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);