httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <>
Subject Re: cvs commit: httpd-2.0 STATUS
Date Mon, 02 Jul 2001 15:31:48 GMT

>   +    * cgi on all platforms is broken.  Specifically, with the addition of
>   +      filters, we have lost the ability to flush partially written buffers
>   +      received from CGI scripts to the network. Apache 1.3 does a
>   +      non-blocking read on the pipe from the CGI. If bytes are present,
>   +      Apache 1.3 keeps reading until one of three conditions are
>   +      hit:
>   +      1. output buffer fills up (Apache should flush to network)
>   +      2. receives an EOF on the pipe (ditto & cleanup)
>   +      3. receives EWOULDBLOCK on the non-blocking read
>   +      In case 3, Apache should flush the network buffer then do a
>   +      blocking read on the pipe. Apache 2.0 always does a blocking read
>   +      (in the content length filter), thus never gets the chance to
>   +      flush the network i/o buffer.

We didn't lose this ability, we just end up relying on the filters to do
it.  Whenever I write a filter, I always read from all buckets with
non-blocking I/O.  This allows me to flush if I can't get data
immediately.  If we have core filters that don't work properly then we
need to fix them.  However, we can't ensure that all external filters will
always work "correctly".

Is there a specific place you are seeing this?


Ryan Bloom               
Covalent Technologies

View raw message