ПРОЕКТЫ 


  АРХИВ 


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: считать POST реквест в буф фер



Hello!

On Sat, Dec 11, 2010 at 05:55:34PM -0500, magz wrote:

> >r->request_body_in_single_buf = 1;
> >rc = ngx_http_read_client_request_body(r, ngx_http_my_body_handler);
> 
> При установке  request_body_in_single_buf в 1, в rc
> возвращается NGX_AGAIN.  Что на сколько я
> понимаю означает что не полностью
> заполнился буфер r->request_body->buf

После вызова ngx_http_read_client_request_body() нужно сделать 
ровно то, что написал Виталий, а именно:

    if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
        return rc;
    }

    return NGX_DONE;

Все остальные действия следует выполнять в обработчике 
ngx_http_my_body_handler (когда nginx его позовёт).

И, чтобы два раза не вставать:

1. Я крайне не рекомендую пользоваться r->request_body->buf.  Это 
указатель на буфер чтения тела запроса, а не на само тело.  Само тело 
следует получить через цепочку r->request_body->bufs.  Для случая 
r->request_body_in_single_buf = 1 там будет один буфер.

2. Если тело больше, чем client_body_buffer_size[1], то оно 
отправится на диск.  Это следует иметь ввиду.

[1] 
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#client_body_buffer_size

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.