]> granicus.if.org Git - apache/commitdiff
mod_ssl: forward EOR (only) brigades to the core_output_filter().
authorYann Ylavic <ylavic@apache.org>
Thu, 24 Sep 2015 23:13:03 +0000 (23:13 +0000)
committerYann Ylavic <ylavic@apache.org>
Thu, 24 Sep 2015 23:13:03 +0000 (23:13 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1705194 13f79535-47bb-0310-9956-ffa450edef68

modules/http/http_request.c
modules/ssl/ssl_engine_io.c

index 0143a2e73fbc45a1a981833313b5157fdf1d4e8a..cbf88404684aa00588ec987759376e2a8848763b 100644 (file)
@@ -256,8 +256,8 @@ AP_DECLARE(void) ap_process_request_after_handler(request_rec *r)
     apr_bucket *b;
     conn_rec *c = r->connection;
 
-    /* Send an EOR bucket through the output filter chain.  When
-     * this bucket is destroyed, the request will be logged and
+    /* Send an EOR bucket (alone!) through the output filter chain.
+     * When this bucket is destroyed, the request will be logged and
      * its pool will be freed
      */
     bb = apr_brigade_create(c->pool, c->bucket_alloc);
index bea0718e5e8b141b924f532a9fe65ded9f957418..6631bf1b190ba0cd046446c571692800c5baa96f 100644 (file)
@@ -1704,15 +1704,15 @@ static apr_status_t ssl_io_filter_output(ap_filter_t *f,
     while (!APR_BRIGADE_EMPTY(bb)) {
         apr_bucket *bucket = APR_BRIGADE_FIRST(bb);
 
-        /* If it is a flush or EOS, we need to pass this down.
+        /* If it is a flush or EOS/EOR, we need to pass this down.
          * These types do not require translation by OpenSSL.
          */
-        if (APR_BUCKET_IS_EOS(bucket)) {
+        if (APR_BUCKET_IS_EOS(bucket) || AP_BUCKET_IS_EOR(bucket)) {
             /*
-             * By definition, nothing can come after EOS.
+             * By definition, nothing can come after EOS/EOR.
              * which also means we can pass the rest of this brigade
              * without creating a new one since it only contains the
-             * EOS bucket.
+             * EOS/EOR bucket.
              */
 
             if ((status = ap_pass_brigade(f->next, bb)) != APR_SUCCESS) {