ПРОЕКТЫ 


  АРХИВ 


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: zero size ошибка при добавлении текста в body filter


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: zero size ошибка при добавлении текста в body filter
  • From: Валентин Бартенев <ne@xxxxxxxx>
  • Date: Tue, 7 Feb 2012 17:34:01 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=vbart.ru; s=mail; h=Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:In-Reply-To:References:Date:Subject:To:From; bh=3CV1gu/+w3YQnzb0A5Ji/fcBA/mABqJ16wI1HejdLOw=; b=Q8X3CESEcNoVCxI2Wk7zxu1NxRF1El5uuCKHQcHc52kOoEHYOV+oYRwsV8NreDW42KGLmDIwjaWG+i3ybcE3WxJROWj2QDZxIrP6JpoiRz1LPJWwUOBjXMPq8EETJknyCGlZHHB5/DW/aQPsTJ099Q6zhXfa0N1RsTjk1+6Dzu5BUWXomSnX+ynaNnCNzjzIm8axEB6P7aKqZ/WMWVEM8iMnch6cEi3R93r/bkdlzJd7+pGt+RDl71JVZ3ikorTX9E2SDWUlDuZ3Wgr5A0QYWrpeiZDe69+pkcaFqIyQejB+TF7WCmudrmg7I9ATOuAgNGABDMao+8oY6FXHOXcmiQ==;
  • In-reply-to: <311863284fe9c79bd3b61215e6dec030.NginxMailingListRussian@forum.nginx.org>
  • References: <311863284fe9c79bd3b61215e6dec030.NginxMailingListRussian@forum.nginx.org>

On Tuesday 07 February 2012 04:38:03 mishalunin wrote:
> Здравствуйте. Пробую писать свой
> модуль для nginx и столкнулся со
> следующей проблемой:
> в body фильтре своего модуля добавляю
> новый буфер в конец цепочки:
> 
> /*тут ищется последний chain link*/
>       ngx_buf_t    *b;
>       b = ngx_calloc_buf(r->pool);
> 
>       b->pos = (u_char *)IF_CODE;
>       b->last = b->pos + sizeof(IF_CODE) - 1;
>       b->memory = 1;
> 
>       ngx_chain_t   *new_link;
>       new_link = ngx_alloc_chain_link(r->pool);
> 
>       new_link->buf = b;
>       new_link->next = NULL;
> 
>       chain_link->next = new_link;
> 
>       chain_link->buf->last_buf = 0;
>       chain_link->buf->sync = 1;
>       new_link->buf->last_buf = 1;
> 
>       return ngx_http_next_body_filter(r, in);
> 
> в итоге браузеру не отдается ничего, а в
> логах следующее:
>     2012/02/06 15:52:51 [debug] 8424#0: *3 write old buf t:1 f:0
> 08D15D44, pos 08D15D44, size: 217 file: 0, size: 0, last: 0 (headers)
>     2012/02/06 15:52:51 [debug] 8424#0: *3 write new buf t:0 f:1
> 00000000, pos 00000000, size: 0 file: 0, size: 6506, last: 0 (html
> file)
>     2012/02/06 15:52:51 [debug] 8424#0: *3 write new buf t:0 f:1 (???)
> 00000000, pos 080BE1B6, size: 22 file: 0, size: 0, last: 0 (my text)
>     2012/02/06 15:52:51 [alert] 8424#0: *3 zero size buf in writer t:0
> r:0 f:1 00000000 080BE1B6-080BE1CC 00000092 0-0 while sending response
> to client, client: 127.0.0.1, server: localhost, request: "GET
> /license.html HTTP/1.1", host: "127.0.0.1
> 
> полазив отладчиком, обнаружил, что
> данные в цепочке мистическим образом
> меняются сразу после передачи ее
> следующему фильтру:
> 
>   (gdb)
> 164             return ngx_http_next_body_filter(r, in);
> (gdb) p *(in->next->buf)
> $15 = {pos = 0x80be1b6 "<h1>INSERTED CODE</h1>", last = 0x80be1cc "",
>   file_pos = 0, file_last = 0, start = 0x0, end = 0x0, tag = 0x0,
>   file = 0x0, shadow = 0x0, temporary = 0, memory = 1, mmap = 0,
>   recycled = 0, in_file = 0, flush = 0, sync = 0, last_buf = 1,
>   last_in_chain = 0, last_shadow = 0, temp_file = 0, num = 0}
> (gdb) step
> ngx_http_charset_body_filter (r=0x9ae5048, in=0xbf861fe4)
>     at src/http/modules/ngx_http_charset_filter_module.c:544
> 544     {
> (gdb) p *(in->next->buf)
> $16 = {pos = 0x80be1b6 "<h1>INSERTED CODE</h1>", last = 0x80be1cc "",
>   file_pos = 0, file_last = 0, start = 0x0, end = 0x0, tag = 0x0,
>   file = 0x82, shadow = 0x0, temporary = 0, memory = 0, mmap = 0,
>   recycled = 0, in_file = 1, flush = 1, sync = 1, last_buf = 0,
>   last_in_chain = 0, last_shadow = 1, temp_file = 1, num = 0}
> 
> например, меняется флаг memory из-за
> которого и вызывается эта ошибка. Что я
> делаю не так? Спасибо :)
> 

ОС какая? Архитектура? #include <ngx_config.h> стоит первым?

--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.