Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re[2]: обработка POST & NGX_AGAIN
----- Alexandre Kalendarev <akalend@xxxxxxx> wrote:
> Валерий,
>
> а какой выход?
> как дождаться чтоб принять оставшуюся часть
>
> да, судя по логам:
> r->request_body->buf->start=r->request_body->buf->pos
> =r->request_body->buf->last
Зависит от хэндлера.
В content-хэндлерах так:
rc = ngx_http_read_client_request_body(r, <хэндлер тела>);
if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
return rc;
}
return NGX_DONE;
В хэндлерах фаз так:
if(r->request_body == NULL) {
rc = ngx_http_read_client_request_body(r, <хэндлер тела>);
if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
return rc;
}
return NGX_DONE;
}
// Всё ещё принимаем тело?
if(r->request_body->rest) {
return NGX_DONE;
}
[.. в этом месте тело полностью принято ..]
Хэндлер тела должен завершить запрос или возобновить хэндлер фазы, иначе запрос
зависнет. Приблизительно так:
static /* или нет static */ void
хэндлер_тела(ngx_http_request_t *r)
{
ngx_int_t rc;
[.. в этом месте тело полностью принято ..]
rc = вызвать_хэндлер_фазы(r);
if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
ngx_http_finalize_request(r, rc);
}
}
--
Regards,
Valery Kholodkov
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|