On Mon, Oct 28, 2013 at 12:22 PM, Eric Covener <cove...@gmail.com> wrote:
> On Mon, Oct 28, 2013 at 11:52 AM, Graham Leggett <minf...@sharp.fm> wrote:
>> Hi all,
>>
>> I am currently trying to find out why mod_ssl stops 
>> CONN_STATE_WRITE_COMPLETION from working correctly, and have noticed that 
>> for no clear reason, mod_ssl flushes the output filters when it receives an 
>> EOS bucket:
>>
>> https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/ssl/ssl_engine_io.c
>>
>>         /* 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 (bio_filter_out_flush(filter_ctx->pbioWrite) < 0) {
>>                 status = outctx->rc;
>>                 break;
>>             }
>>
>> It would seem at the very least in order for any kind of write completion to 
>> be possible we would need to stop mod_ssl from trying to flush on EOS. Is 
>> there a specific problem that mod_ssl tries to solve by doing this?
>
> If you go back to e.g. r91413 and look at the entire file, it seems
> that the EOS used to flush out some data buffered in openssl:

Sorry, stray gmail keystrongs, meant to include

ssl_io_filter_Output()
...
    APR_BRIGADE_FOREACH(bucket, bb) {
        const char *data;
        apr_size_t len, n;

        if (APR_BUCKET_IS_EOS(bucket)) {
            if ((ret = churn_output(ctx)) != APR_SUCCESS) {


churn_output()
...
  if (BIO_pending(ctx->pbioWrite)) {
   ... flush

Reply via email to