read request body with http2

Maxim Dounin mdounin at
Mon Oct 21 12:40:39 UTC 2019


On Thu, Oct 17, 2019 at 04:42:54PM -0400, Ansuel wrote:

> I don't know if this is a bug or not but... yes you were right...
> All the work should be done in the ngx_http_read_client_request_body
> handler, as it does duplicate the r connection to another address
> What confused me is the fact that this is only done in http2 connections...
> I really don't know why but all the changes i do in the read_client_request
> handler reflect to the main ngx_http_request_t struct. I thought the code
> was cleaner by having the body read in a function and parse the data from it
> in another function. 
> Well this doesn't work with http2 because all the changes done in
> read_client_request handler get lost and doesn't apply to the main struct...
> Think this is a bug as the behavior should be similar and not change across
> http versions... 
> Sorry for the bad explanation... Also i think this should be noted in the
> wiki.

It looks like you don't understand how things work.  First 
of all, when the ngx_http_read_client_request_body() function 
returns, it doesn't mean that the request body was successfully 
read, and the body handler function was already called.

You may want to start with reading more about event-driven 
programming in general.  Also, as previously suggested, you may 
want to read Development guide, it has enough information about 
how things work and how they are expected to be handled.

Also, if you want to better understand how nginx works, consider 
reading nginx source code - it is the only direct source of the 

Maxim Dounin

More information about the nginx mailing list