ПРОЕКТЫ 


  АРХИВ 


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_subrequest в ngx_http_ssi_filter_module?

Насколько я понял, эмулируется сессия с помощью:
ngx_http_get_module_ctx ( r, ngx_http_ssi_filter_module );
ngx_http_set_ctx ( r, ctx, ngx_http_ssi_filter_module );

Но я столкнулся с тем, что первый параметр "r" (ngx_http_request_t)
в ngx_http_ssi_body_filter меняется после вызова ngx_http_subrequest,
и ngx_http_get_module_ctx возвращает NULL, даже если заранее
инициализировать через ngx_http_set_ctx  в ngx_http_ssi_header_filter.

Как это работает в ngx_http_ssi_filter_module?

----- Original Message ----- From: "Igor Sysoev" <is@xxxxxxxxxxxxx>
To: <nginx-ru@xxxxxxxxx>
Sent: Thursday, June 07, 2007 1:21 PM
Subject: Re: BugReport: ./configure --add-module неправильно подключает filter модуль


On Thu, Jun 07, 2007 at 01:10:15PM +0400, Denis Erygin wrote:

Прописал HTTP_AUX_FILTER_MODULES.

Есть вопрос насчет буферов:

static ngx_int_t ngx_http_my_body_filter ( ngx_http_request_t* r,
ngx_chain_t* in )

Если смотреть in->buf, то pos = last = start = end = NULL,
но инициализирован file и in_file = 1, тогда как в ngx_http_chunked_module
можно прочитать буфер сразу из pos. Поскольку основа фильтра взята от
chunked
модуля, то предполагаю, что это зависит от порядка модулей в цепочке?

Нет, chunked берёт размер буфера из ngx_buf_size(cl->buf). Там используется
file_pos, если in_file = 1.

Вставлять свой модуль нужно примерно там, куда его вставляет AUX.
На уровне chunked после gzip'а делать нечего.


&ngx_http_write_filter_module,
&ngx_http_header_filter_module,
&ngx_http_chunked_filter_module,                  <=
&ngx_http_range_header_filter_module,
&ngx_http_gzip_filter_module,
&ngx_http_postpone_filter_module,
&ngx_http_charset_filter_module,
&ngx_http_ssi_filter_module,
&ngx_http_userid_filter_module,
&ngx_http_headers_filter_module,
&ngx_http_my_filter_module,                          <=
&ngx_http_copy_filter_module,
&ngx_http_range_body_filter_module,
&ngx_http_not_modified_filter_module,


--
Игорь Сысоев
http://sysoev.ru




 




Copyright © Lexa Software, 1996-2009.