From: Jim Jagielski Date: Mon, 19 Mar 2007 20:04:56 +0000 (+0000) Subject: Some minor tweaks... return quickly if given an X-Git-Tag: 2.3.0~1873 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=053638a8f032344f6494c3f156ebe1cf01090a5a;p=apache Some minor tweaks... return quickly if given an empty bb, ensure EOS is the last bucket we handle and if our chunked passing fails, then we need to report that immediately. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@520074 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/experimental/mod_sedfilter.c b/modules/experimental/mod_sedfilter.c index c93d0db4b7..13a96b538d 100644 --- a/modules/experimental/mod_sedfilter.c +++ b/modules/experimental/mod_sedfilter.c @@ -277,6 +277,7 @@ static apr_status_t sed_filter(ap_filter_t *f, apr_bucket_brigade *bb) apr_status_t rv; sed_module_ctx *ctx = f->ctx; + /* * First time around? Create the saved bb that we used for each pass * through. Note that we can also get here when we explicitly clear ctx, @@ -288,6 +289,12 @@ static apr_status_t sed_filter(ap_filter_t *f, apr_bucket_brigade *bb) apr_table_unset(f->r->headers_out, "Content-Length"); } + /* + * Shortcircuit processing + */ + if (APR_BRIGADE_EMPTY(bb)) + return APR_SUCCESS; + /* * Everything to be passed to the next filter goes in * here, our pass brigade. @@ -323,8 +330,10 @@ static apr_status_t sed_filter(ap_filter_t *f, apr_bucket_brigade *bb) while ((b = APR_BRIGADE_FIRST(bb)) && (b != APR_BRIGADE_SENTINEL(bb))) { apr_brigade_length(passbb, 0, &blen); if ((blen != -1) && (blen > AP_MIN_BYTES_TO_WRITE)) { - ap_pass_brigade(f->next, passbb); + rv = ap_pass_brigade(f->next, passbb); apr_brigade_cleanup(passbb); + if (rv != APR_SUCCESS) + return rv; } if (APR_BUCKET_IS_EOS(b)) { /* @@ -342,6 +351,7 @@ static apr_status_t sed_filter(ap_filter_t *f, apr_bucket_brigade *bb) apr_brigade_cleanup(ctx->ctxbb); APR_BUCKET_REMOVE(b); APR_BRIGADE_INSERT_TAIL(passbb, b); + break; } else if (APR_BUCKET_IS_METADATA(b)) { APR_BUCKET_REMOVE(b);