Commit d60ec2d6 authored by Stefan Fritsch's avatar Stefan Fritsch
Browse files

Don't try to compress requests with a zero sized body.

PR: 51350


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1146418 13f79535-47bb-0310-9956-ffa450edef68
parent 22ed401f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2,6 +2,9 @@

Changes with Apache 2.3.14

  *) mod_deflate: Don't try to compress requests with a zero sized body.
     PR 51350. [Stefan Fritsch]

  *) core: Fix startup on IP6-only systems. PR 50592. [Joe Orton,
     <root linkage white-void net>]

+24 −2
Original line number Diff line number Diff line
@@ -426,6 +426,8 @@ static apr_status_t deflate_out_filter(ap_filter_t *f,
    request_rec *r = f->r;
    deflate_ctx *ctx = f->ctx;
    int zRC;
    apr_size_t len;
    const char *data;
    deflate_filter_config *c;

    /* Do nothing if asked to filter nothing. */
@@ -446,6 +448,28 @@ static apr_status_t deflate_out_filter(ap_filter_t *f,
        char *token;
        const char *encoding;

        /* Delay initialization until we have seen some data */
        e = APR_BRIGADE_FIRST(bb);
        while (1) {
            apr_status_t rc;
            if (e == APR_BRIGADE_SENTINEL(bb))
                return ap_pass_brigade(f->next, bb);
            if (APR_BUCKET_IS_EOS(e)) {
                ap_remove_output_filter(f);
                return ap_pass_brigade(f->next, bb);
            }
            if (APR_BUCKET_IS_METADATA(e))
                continue;

            rc = apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
            if (rc != APR_SUCCESS)
                return rc;
            if (len > 0)
                break;

            e = APR_BUCKET_NEXT(e);
        }

        ctx = f->ctx = apr_pcalloc(r->pool, sizeof(*ctx));

        /*
@@ -645,9 +669,7 @@ static apr_status_t deflate_out_filter(ap_filter_t *f,

    while (!APR_BRIGADE_EMPTY(bb))
    {
        const char *data;
        apr_bucket *b;
        apr_size_t len;

        /*
         * Optimization: If we are a HEAD request and bytes_sent is not zero