upstream
Alexander Dolgarev
a.dolgarev at gmail.com
Wed Apr 23 00:44:18 MSD 2008
У меня была схожая проблема пока для входной цепочки для каждого буфера не
выставлял
cl->buf->pos = cl->buf->last = NULL;
2008/4/21 anon <linux-kernel at mail.ru>:
> вот мой body_filter_module
> ...
> b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
> for(cl = in ; cl ; )
> {
> size = cl->buf->last - cl->buf->pos;
> el = ngx_array_push_n(r->news, size);
> memcpy(el, cl->buf->pos, size);//я копирую себе содержимое
> тело ответа
> //cl->buf->pos = cl->buf->last;если не делать эти строчки
> ответ от бекенда перестает ситаться
> //cl->buf->last = cl->buf->start;
> if (cl->buf->last_buf)
> {
> *((char *)ngx_array_push(r->news)) = '\0';
> //printf("news=%s\nend\n", (char *)r->news->elts);
> //а тут я хочу создвть свою цепочку полжить в нее буфер и обработанные
> данные и выдать клиенту
> //как правильно вызвать следующий фильтр с моей цепочкой
> //return ngx_http_next_body_filter(r, in);
> }
> cl = cl->next;
> }
> как правильно обновить цепочки чтобы от апстрима, чтобы продолжали
> приходит данные и я их накапливал у себя в памяти чтобы потом отправить
> после некоторой модификации
> конкретно затык происходит в ngx_http_upstream.c:3553 в
> ngx_chain_update_chains что то с цепочками не так обрабатывается,
> если я из своего фильтр модуля не вызываю ngx_http_next_body_filter(r,
> in), то при обновлениии цепочек получаю free - NULL busy - not NULL out -
> NULL
> а должно быть(когда сразу из модуля вызываю http_next_body_filter(r, in)
> free - not NULL busy - not NULL out - NULL
> какой код нада возвращать из моего фильтра, если я не отправляю цепочки
> следующему фильтру а просто у себя данные собираю.
>
> Подскажите, куда копатью
> Спасибо.
>
> -----Original Message-----
> From: Sergey Bochenkov <bachan at j3qq4.org>
> To: nginx-ru at sysoev.ru
> Date: Mon, 21 Apr 2008 14:00:29 +0400
> Subject: Re: upstream
>
> >
> > А в чем проблема? Как пробовали?
> > В рассылке по main_filter_need_in_memory и NGX_AGAIN искали?
> >
> > Архив рассылки есть на gmane.org.
> >
> > > как организовать такую штуку: получать ответ от апстрима - сохранить
> его весь в памяти обработать и потом послать пользователю.
> > > Пробую серез фильтр модуль - не могу разобраться как цепочки
> обрабатывать а потом отослать все
> > > Подскажите
> > >
> > >
> > >
> >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20080422/8925b87c/attachment.html>
More information about the nginx-ru
mailing list