]> granicus.if.org Git - apache/commitdiff
mod_ssl: don't FLUSH output (blocking) on read.
authorYann Ylavic <ylavic@apache.org>
Tue, 29 Sep 2015 09:42:56 +0000 (09:42 +0000)
committerYann Ylavic <ylavic@apache.org>
Tue, 29 Sep 2015 09:42:56 +0000 (09:42 +0000)
This defeats deferred write (and pipelining), eg. check_pipeline() is not
expecting the pipe to be flushed under it.
So let OpenSSL >= 0.9.8m issue the flush when necessary (earlier versions
are known to not handle all the cases, so we keep flushing with those).

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

modules/ssl/ssl_engine_io.c

index 6631bf1b190ba0cd046446c571692800c5baa96f..340011865ad5ef5a2a1c7dc4d759866039b2f39c 100644 (file)
@@ -466,9 +466,10 @@ static int bio_filter_in_read(BIO *bio, char *in, int inlen)
     }
 
     /* In theory, OpenSSL should flush as necessary, but it is known
-     * not to do so correctly in some cases; see PR 46952.
-     *
-     * Historically, this flush call was performed only for an SSLv2
+     * not to do so correctly in some cases (< 0.9.8m); see PR 46952.
+     */
+#if OPENSSL_VERSION_NUMBER < 0x0009080df
+    /* Historically, this flush call was performed only for an SSLv2
      * connection or for a proxy connection.  Calling _out_flush
      * should be very cheap in cases where it is unnecessary (and no
      * output is buffered) so the performance impact of doing it