]> granicus.if.org Git - apache/commitdiff
mod_ssl: Don't flush when an EOS is received. Prepares mod_ssl
authorGraham Leggett <minfrin@apache.org>
Sat, 16 Nov 2013 18:50:45 +0000 (18:50 +0000)
committerGraham Leggett <minfrin@apache.org>
Sat, 16 Nov 2013 18:50:45 +0000 (18:50 +0000)
to support write completion.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1542546 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/ssl/ssl_engine_io.c

diff --git a/CHANGES b/CHANGES
index 7e79aa82931b0b548d8d43e14d634208a9cd933f..79848fced39f16a2ad93036d42bb8e6af209c9a0 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.0
 
+  *) mod_ssl: Don't flush when an EOS is received. Prepares mod_ssl
+     to support write completion. [Graham Leggett]
+
   *) Fix potential rejection of valid MaxMemFree and ThreadStackSize
      directives.  [Mike Rumph <mike.rumph oracle.com>]
 
index 4c4382da915711a50e68a07381c58f0e0793d85c..e766f096602b12b3e1e997efd7c0c1409df8a83e 100644 (file)
@@ -1681,31 +1681,30 @@ static apr_status_t ssl_io_filter_output(ap_filter_t *f,
         /* If it is a flush or EOS, we need to pass this down.
          * These types do not require translation by OpenSSL.
          */
-        if (APR_BUCKET_IS_EOS(bucket) || APR_BUCKET_IS_FLUSH(bucket)) {
+        if (APR_BUCKET_IS_EOS(bucket)) {
+            /*
+             * By definition, nothing can come after EOS.
+             * which also means we can pass the rest of this brigade
+             * without creating a new one since it only contains the
+             * EOS bucket.
+             */
+
+            if ((status = ap_pass_brigade(f->next, bb)) != APR_SUCCESS) {
+                return status;
+            }
+            break;
+        }
+        else if (APR_BUCKET_IS_FLUSH(bucket)) {
+
             if (bio_filter_out_flush(filter_ctx->pbioWrite) < 0) {
                 status = outctx->rc;
                 break;
             }
 
-            if (APR_BUCKET_IS_EOS(bucket)) {
-                /*
-                 * By definition, nothing can come after EOS.
-                 * which also means we can pass the rest of this brigade
-                 * without creating a new one since it only contains the
-                 * EOS bucket.
-                 */
-
-                if ((status = ap_pass_brigade(f->next, bb)) != APR_SUCCESS) {
-                    return status;
-                }
-                break;
-            }
-            else {
-                /* bio_filter_out_flush() already passed down a flush bucket
-                 * if there was any data to be flushed.
-                 */
-                apr_bucket_delete(bucket);
-            }
+            /* bio_filter_out_flush() already passed down a flush bucket
+             * if there was any data to be flushed.
+             */
+            apr_bucket_delete(bucket);
         }
         else if (AP_BUCKET_IS_EOC(bucket)) {
             /* The EOC bucket indicates connection closure, so SSL