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

Denis Erygin erygin at corp.mail.ru
Thu Jun 7 13:10:15 MSD 2007


Прописал 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
модуля, то предполагаю, что это зависит от порядка модулей в цепочке?

&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,

----- Original Message ----- 
From: "Igor Sysoev" <is at rambler-co.ru>
To: <nginx-ru at sysoev.ru>
Cc: "Evan Miller" <emmiller+gmane at gmail.com>
Sent: Thursday, June 07, 2007 10:36 AM
Subject: Re: BugReport: ./configure --add-module неправильно подключает 
filter модуль


On Wed, Jun 06, 2007 at 03:59:45PM -0700, Evan Miller wrote:

> mymodule/config:
>
> ngx_addon_name=ngx_http_my_module
> HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES ngx_http_my_module"

- HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES ngx_http_my_module"
+ HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES ngx_http_my_module"

> NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_my_module.c"
>
> Denis Erygin wrote:
> >Добрый день.
> >
> >Если следовать рекомендациям из статьи
> >http://www.riceonfire.org/emiller/nginx-modules-guide.html
> >при написании filter модуля, то он вставляется в начало списка filter
> >модулей,
> >что приводит к его игнорированию, из-за перезаписи 
> >ngx_http_top_body_filter
> >в ngx_http_write_filter_module, который считает себя началом цепочки
> >фильтров.
> >
> >*[src/http/ngx_http_write_filter_module.c]*
> >
> >static ngx_int_t
> >ngx_http_write_filter_init(ngx_conf_t *cf)
> >{
> >    ngx_http_top_body_filter = ngx_http_write_filter;
> >
> >    return NGX_OK;
> >}
> >
> >*[objs/ngx_modules.c]*
> >
> >ngx_module_t *ngx_modules[] = {
> >.....
> >&ngx_http_addon_filter_module,    <= вставка в начало списка!
> >&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_copy_filter_module,
> >&ngx_http_range_body_filter_module,
> >&ngx_http_not_modified_filter_module,
> >                                                  <= правильное место
> >для вставки
> >NULL
> >};
>
>
>

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






More information about the nginx-ru mailing list