httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefan Eissing <stefan.eiss...@greenbytes.de>
Subject Re: svn commit: r1688474 [4/21] - in /httpd/httpd/trunk/modules/http2: ./ m4/ mod-h2.xcodeproj/ mod-h2.xcodeproj/project.xcworkspace/ mod-h2.xcodeproj/project.xcworkspace/xcshareddata/ mod-h2.xcodeproj/xcuserdata/ mod-h2.xcodeproj/xcuserdata/sei.xcuserdata...
Date Mon, 21 Sep 2015 09:19:24 GMT
Admittedly, my memory is hazy. I cannot really rationalize its existence. This looks wrong
now. I will throw it out.

> Am 21.09.2015 um 10:53 schrieb Yann Ylavic <ylavic.dev@gmail.com>:
> 
> Hi Stefan,
> 
>> 
>> Added: httpd/httpd/trunk/modules/http2/mod_h2/h2_conn_io.c
>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/mod_h2/h2_conn_io.c?rev=1688474&view=auto
>> ==============================================================================
>> --- httpd/httpd/trunk/modules/http2/mod_h2/h2_conn_io.c (added)
>> +++ httpd/httpd/trunk/modules/http2/mod_h2/h2_conn_io.c Tue Jun 30 15:26:16 2015
>> @@ -0,0 +1,285 @@
> []
>> +
>> +apr_status_t h2_conn_io_write(h2_conn_io *io,
>> +                              const char *buf, size_t length)
>> +{
>> +    apr_status_t status = APR_SUCCESS;
>> +    io->unflushed = 1;
>> +
>> +    if (io->buffer_output) {
> [...]
>> +    }
>> +    else {
>> +        status = apr_brigade_write(io->output, flush_out, io, buf, length);
>> +        if (status == APR_SUCCESS
>> +            || APR_STATUS_IS_ECONNABORTED(status)
>> +            || APR_STATUS_IS_EPIPE(status)) {
>> +            /* These are all fine and no reason for concern. Everything else
>> +             * is interesting. */
>> +            status = APR_SUCCESS;
> 
> Why ECONNABORTED and EPIPE are not errors here?
> 
>> +        }
>> +        else {
>> +            ap_log_cerror(APLOG_MARK, APLOG_DEBUG, status, io->connection,
>> +                          "h2_conn_io: write error");
>> +        }
>> +    }
>> +
>> +    return status;
>> +}
> [...]
>> +
>> +apr_status_t h2_conn_io_flush(h2_conn_io *io)
>> +{
>> +    if (io->unflushed) {
> [...]
>> +
>> +        /* Send it out through installed filters (TLS) to the client */
>> +        apr_status_t status = flush_out(io->output, io);
>> +
>> +        if (status == APR_SUCCESS
>> +            || APR_STATUS_IS_ECONNABORTED(status)
>> +            || APR_STATUS_IS_EPIPE(status)) {
>> +            /* These are all fine and no reason for concern. Everything else
>> +             * is interesting. */
>> +            io->unflushed = 0;
> 
> Likewise?
> 
>> +        }
>> +        else {
>> +            ap_log_cerror(APLOG_MARK, APLOG_DEBUG, status, io->connection,
>> +                          "h2_conn_io: flush error");
>> +        }
>> +
>> +        return status;
>> +    }
>> +    return APR_SUCCESS;
>> +}
> 
> 
> It also seems that h2_session sometimes (ab)uses APR_TIMEUP as EAGAIN,
> the former is generally a reason to stop processing though. Why not
> use APR_EGAIN for those cases?
> 
> 
> Regards,
> Yann.

<green/>bytes GmbH
Hafenweg 16, 48155 M√ľnster, Germany
Phone: +49 251 2807760. Amtsgericht M√ľnster: HRB5782




Mime
View raw message