After upgrading from 2.4.12 to 2.4.18 we find that some requests for files cause a lock-up when HTTPS is used, but not with plain HTTP. After some debugging it seems the problem is that the mod_ssl no longer explicitly flushes the output it produced before going back to reading a new request on the same connection.

This is a 32-bit Intel Linux platform, and by stepping through the mod_ssl output filter in the debugger I can see that the files that cause problems are being read by Apache using the mmap approach.

Restoring the explicit flushing from 2.4.12 gets the 2.4.18 version of mod-ssl working for us. Here is the patch:


--- ssl_engine_io.c.orig        2015-11-19 11:55:25.000000000 -0800
+++ ssl_engine_io.c     2016-01-31 17:22:54.586227441 -0800
@@ -466,6 +466,21 @@
         return -1;
     }

+    /* 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
+     * 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
+     * unconditionally should be minimal.
+     */
+    if (bio_filter_out_flush(inctx->bio_out) < 0) {
+        bio_filter_out_ctx_t *outctx = inctx->bio_out->ptr;
+        inctx->rc = outctx->rc;
+        return -1;
+    }
+
     BIO_clear_retry_flags(bio);

     if (!inctx->bb) {



Reply via email to