ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: BugReport: ./configure --add-module неправильно подключает filter модуль



Что значит - перехватить?

Перехватить, значит прочитать ответ и исключить его из вывода браузеру.
В каком месте он добавляется к результирующему ответу браузеру?

Например, если смотреть 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@xxxxxxxxxxxxx>
To: <nginx-ru@xxxxxxxxx>
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




 




Copyright © Lexa Software, 1996-2009.