Re: BugReport: ./configure --add-module неправильно подключает filter модуль
Denis Erygin
erygin at corp.mail.ru
Fri Jun 8 23:40:21 MSD 2007
>Что значит - перехватить?
Перехватить, значит прочитать ответ и исключить его из вывода браузеру.
В каком месте он добавляется к результирующему ответу браузеру?
Например, если смотреть ngx_http_addition_filter_module.c , то там просто
вызываются ngx_http_subrequest, а затем в браузере появляется их вывод,
хотя явных манипуляций с цепочками буферов (ngx_chain_t) там нет...
>Этот handler вызывается по окончании подзапроса.
Можно его использовать для чтения ответа?
Насчет логики цепочек (ngx_chain_t):
Если нужно заменить один из буферов на другой меньшего/большего размера,
то как это правильно сделать в стиле nginx? Простая замена указателя на chain->buf->pos
может привести к утечке памяти.
Все что осталось выяснить.
----- Original Message -----
From: "Igor Sysoev" <is at rambler-co.ru>
To: <nginx-ru at sysoev.ru>
Sent: Friday, June 08, 2007 10:41 PM
Subject: Re: BugReport: ./configure --add-module неправильно подключает filter модуль
On Fri, Jun 08, 2007 at 03:24:13PM +0400, Denis Erygin wrote:
> Общая картина существенно прояснилась, но остались вопросы по
> ngx_http_subrequest ( ngx_http_request_t* r, ngx_str_t*uri, ngx_str_t*
> args, ngx_http_request_t **sr,
> ngx_http_post_subrequest_t* psr,
> ngx_uint_t flags )
>
> >Вообще при отладке полезно логирование, а не отладчик
> Использую и то и другое.
>
> struct ngx_http_post_subrequest_t {
> ngx_http_post_subrequest_pt handler;
> void* data;
> };
>
> Что делает этот handler если его установить и передать внутри
> структуры ngx_http_post_subrequest_t (psr) в ngx_http_subrequest?
Этот handler вызывается по окончании подзапроса.
> И главный вопрос: где можно перехватить буфер ответа ngx_http_subrequest,
> если мой фильтр установлен на location отличный от переданного в
> ngx_http_subrequest, например "/my_filter", а запрос на
> "/for_http_subrequests"?
Что значит - перехватить ?
> В этом случае ngx_http_my_body_filter() вызывается всего один раз,
> так как привязан к location "/my_filter".
>
> Да, браузер получает смешанный результат, но где он смешивается неясно,
> по крайней мере дамп ngx_chain_t в конце (после sub_http_request)
> ngx_http_my_body_filter()
> его не содержит.
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list