Reading large request body using ngx_http_read_client_request_body
Maxim Dounin
mdounin at mdounin.ru
Tue May 21 12:51:57 UTC 2019
Hello!
On Mon, May 20, 2019 at 04:35:51PM -0400, NginxNewbee wrote:
> Thanks. Your understanding is correct. For cases, when
> ngx_http_read_client_request_body returns NGX_AGAIN, thread returns and
> request will get finalized. I'll go ahead and move reading contents of r and
> request body to main thread in the content handler and just keep execution
> of our business logic on thread.
>
> Just one more question - Once I move ngx_http_read_client_request_body in
> content handler on main thread and it returns NGX_AGAIN, how should I handle
> it? Code sample on nginx developer reference, recommends this.
>
> ngx_int_t
> ngx_http_foo_content_handler(ngx_http_request_t *r)
> {
> ngx_int_t rc;
>
> rc = ngx_http_read_client_request_body(r, ngx_http_foo_init);
>
> if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
> /* error */
> return rc;
> }
>
> return NGX_DONE;
> }
As long as ngx_http_read_client_request_body() is used in a
content handler and returns NGX_AGAIN, no special handling is
needed. Just returning NGX_DONE as in the example is enough.
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx
mailing list