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

Reply via email to