Commit 9e618fb5 authored by Jim Jagielski's avatar Jim Jagielski
Browse files

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
parent 069d0e03
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -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);