AIUI this is the desired default behavior from apr; why change httpd at all? I was receptive to your suggestion/patch to resolve this as the default on apr 0.9/1.2/1.x branches, per the unix implementation.
Bill [EMAIL PROTECTED] wrote: > Author: covener > Date: Wed Oct 3 10:17:24 2007 > New Revision: 581660 > > URL: http://svn.apache.org/viewvc?rev=581660&view=rev > Log: > mod_ext_filter: Prevent a hang on Windows when the filter > input data is pipelined > PR 29901 > > > Modified: > httpd/httpd/trunk/CHANGES > httpd/httpd/trunk/modules/filters/mod_ext_filter.c > > Modified: httpd/httpd/trunk/CHANGES > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=581660&r1=581659&r2=581660&view=diff > ============================================================================== > --- httpd/httpd/trunk/CHANGES [utf-8] (original) > +++ httpd/httpd/trunk/CHANGES [utf-8] Wed Oct 3 10:17:24 2007 > @@ -2,6 +2,10 @@ > Changes with Apache 2.3.0 > [ When backported to 2.2.x, remove entry from this file ] > > + *) mod_ext_filter: Prevent a hang on Windows when the filter > + input data is pipelined. > + PR 29901 [Eric Covener] > + > *) mod_deflate: Don't leave a strong ETag in place while transforming > the entity. > PR 39727 [Nick Kew] > > Modified: httpd/httpd/trunk/modules/filters/mod_ext_filter.c > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/filters/mod_ext_filter.c?rev=581660&r1=581659&r2=581660&view=diff > ============================================================================== > --- httpd/httpd/trunk/modules/filters/mod_ext_filter.c (original) > +++ httpd/httpd/trunk/modules/filters/mod_ext_filter.c Wed Oct 3 10:17:24 > 2007 > @@ -485,6 +485,14 @@ > return rc; > } > > + rc = apr_file_pipe_timeout_set(ctx->proc->out, 0); > + if (rc != APR_SUCCESS) { > + ap_log_rerror(APLOG_MARK, APLOG_ERR, rc, f->r, > + "couldn't set child stdin pipe timeout to 0 for filter > %s ", > + ctx->filter->name); > + return rc; > + } > + > apr_pool_note_subprocess(ctx->p, ctx->proc, APR_KILL_AFTER_TIMEOUT); > > /* We don't want the handle to the child's stdin inherited by any > > > >
