]> git.kaiwu.me - nginx.git/commit
Merge of r4921, r4922, r4923, r4924, r4925: request body fixes.
authorMaxim Dounin <mdounin@mdounin.ru>
Tue, 11 Dec 2012 13:18:50 +0000 (13:18 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Tue, 11 Dec 2012 13:18:50 +0000 (13:18 +0000)
commit663e14e10d0f90fdf61f059d268dd4eb7e5be7f8
treee35b2db1442ccb0560adbf94cf8a30ea8b0021f0
parentf45e938b89d0ef3967bf95216bd3f63ef5e65429
Merge of r4921, r4922, r4923, r4924, r4925: request body fixes.

*) Request body: fixed "501 Not Implemented" error handling.

   It is not about "Method" but a generic message, and is expected to be used
   e.g. if specified Transfer-Encoding is not supported.  Fixed message to
   match RFC 2616.

   Additionally, disable keepalive on such errors as we won't be able to read
   request body correctly if we don't understand Transfer-Encoding used.

*) Request body: $request_body variable generalization.

   The $request_body variable was assuming there can't be more than two
   buffers.  While this is currently true due to request body reading
   implementation details, this is not a good thing to depend on and may
   change in the future.

*) Request body: code duplication reduced, no functional changes.

   The r->request_body_in_file_only with empty body case is now handled in
   ngx_http_write_request_body().

*) Request body: fixed socket leak on errors.

   The r->main->count reference counter was always incremented in
   ngx_http_read_client_request_body(), while it is only needs to be
   incremented on positive returns.

*) Request body: properly handle events while discarding body.

   An attempt to call ngx_handle_read_event() before actually reading
   data from a socket might result in read event being disabled, which is
   wrong.  Catched by body.t test on Solaris.
src/http/ngx_http_header_filter_module.c
src/http/ngx_http_request_body.c
src/http/ngx_http_special_response.c
src/http/ngx_http_variables.c