On 01/06/2006 07:47 PM, Jim Jagielski wrote: > Still not sure why you are using a specific error detection > filter rather than the generic one in -trunk >
Arghh. Sorry I must have missed to include your patch that changed this. Thanks for catching this. I will provide a new patch. [..cut..] >> + /* >> + * Ensure that we sent an EOS bucket thru the filter chain, if >> we already >> + * have sent some data. Maybe ap_proxy_backend_broke was called >> and added >> + * one to the brigade already. So we should not do this in this >> case. >> + */ >> + if (data_sent && !r->eos_sent && APR_BRIGADE_EMPTY >> (output_brigade)) { >> + e = apr_bucket_eos_create(r->connection->bucket_alloc); >> + APR_BRIGADE_INSERT_TAIL(output_brigade, e); >> + } >> + >> > > Also, if data_sent is true, then ap_proxy_backend_broke() already > sent the EOS, so why are we checking if it's true again? I > think the logic is wrong... No, there is also the case that the client aborted the connection. In this case status == APR_SUCCESS So the outer if condition around ap_proxy_backend_broke is not true and it is not called. Anyway since we had sent some data we should sent an EOS if we have not done already to make all filters on the chain aware of it. Especially mod_disk_cache needs to know in order to remove the temporary file created for the cache entry. Regards Rüdiger