Игорь, а при наличии post_action данная конструкция и не должна
срабатывать? Как можно сделать чтобы cleanup-процедура работала и с
post_action?
Я точно не проверял, но вот на develop nginx'е 0.3.37 cleanup
процедура отрабатывает. А на тестовом, у которого есть post_action
(0.3.40) - нет.
On 4/18/06, Igor Sysoev <is@xxxxxxxxxxxxx> wrote:
> On Tue, 18 Apr 2006, ForJest wrote:
>
> > Единственно что - я не придумал ничего лучше чем вставить регистрацию
> > cleanup процедуры в фильтр тела ответа, по флагу. Я не нашёл способа,
> > как получить request_t где-нибудь в инциализации или создании conf.
> > Может есть лучшее место?
> > -------
> > if (!conf->is_finish_inited)
> > {
> > cln = ngx_http_cleanup_add(r, 0);
> > if (cln == NULL) {
> > ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
> > return NGX_ERROR;
> > }
> >
> > cln->handler = ngx_http_request_stats_cleanup;
> > cln->data = r;
> > conf->is_finish_inited = 1;
> > }
> > ----------
>
> Флаг должен быть не в конфигурации, а в конексте самого запроса.
> Использование контекста можно посмотреть, например, в charset, gzip, userid:
> ngx_http_get_module_ctx();
> ngx_http_set_ctx();
>
> > И ещё вопрос - у cleanup процедуры есть какие-либо обязательства? Т.е.
> > там нужно вызывать цепочку дальше, или нет? Если нужно, то где взять
> > статус завершения, для вызова ngx_http_finalize_request?
>
> Нет, никаких обязательств нет, только return.
>
>
> Игорь Сысоев
> http://sysoev.ru
>
>