>
> > + * 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?
>
mod_cgi.c (and I suspect mod_cgid.c though I haven't looked). I am working up a fix
now.
Bill