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