You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by mi...@apache.org on 2013/11/16 19:50:46 UTC

svn commit: r1542546 - in /httpd/httpd/trunk: CHANGES modules/ssl/ssl_engine_io.c

Author: minfrin
Date: Sat Nov 16 18:50:45 2013
New Revision: 1542546

URL: http://svn.apache.org/r1542546
Log:
mod_ssl: Don't flush when an EOS is received. Prepares mod_ssl
to support write completion.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/ssl/ssl_engine_io.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1542546&r1=1542545&r2=1542546&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Sat Nov 16 18:50:45 2013
@@ -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>]
 

Modified: httpd/httpd/trunk/modules/ssl/ssl_engine_io.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/ssl_engine_io.c?rev=1542546&r1=1542545&r2=1542546&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/ssl/ssl_engine_io.c (original)
+++ httpd/httpd/trunk/modules/ssl/ssl_engine_io.c Sat Nov 16 18:50:45 2013
@@ -1681,31 +1681,30 @@ static apr_status_t ssl_io_filter_output
         /* 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