On 29 Oct 2013, at 12:07 PM, Plüm, Rüdiger, Vodafone Group
<[email protected]> wrote:
>> + status = ap_save_brigade(f, &(filter_ctx->bb), &bb,
>> + filter_ctx->deferred_write_pool);
>
> When will this saved brigade handed over to the core output filter?
> How will it be triggered? IMHO the WRITE_COMPLETION only calls the core
> output filter.
Ouch, so it is:
while (output_filter->next != NULL) {
output_filter = output_filter->next;
}
Ideally there should be a category of filters that run during write completion,
not just a hard coded "write to the last filter and hope for the best".
Alternatively if filters could declare themselves "async safe", we could inject
the switch-to-write-completion-on-eos behaviour into a dedicated filter that
slots itself automatically in front of all the async safe filters in the chain.
I think I'm back to removing the flush-on-eos for the short term.
>> - c->data_in_output_filters = 0;
>> + c->data_in_output_filters--;
>
> Why do you switch from a boolean flag to a counter?
Two output filters keeping data, not one.
Regards,
Graham
--