Welcome! Log In Create A New Profile

Advanced

[PATCH 02 of 25] Fix for incorrect 201 replies from dav module

Maxim Dounin
September 06, 2011 12:10PM
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1315324342 -14400
# Node ID d90e06868b1d53b1da9280c81c113255a3982c92
# Parent 08a723d1784ec0734114f669626189f3de69ae2d
Fix for incorrect 201 replies from dav module.

Replies with 201 code contain body, and we should clearly indicate it's
empty if it's empty. Before 0.8.32 chunked was explicitly disabled for
201 replies and as a result empty body was indicated by connection close
(not perfect, but worked). Since 0.8.32 chunked is enabled, and this
causes incorrect responses from dav module when HTTP/1.1 is used: with
"Transfer-Encoding: chunked" but no chunks at all.

Fix is to actually return empty body in special response handler instead
of abusing r->header_only flag.

See here for initial report:
http://nginx.org/pipermail/nginx-ru/2010-October/037535.html

diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -421,7 +421,6 @@ ngx_http_special_response_handler(ngx_ht
if (error == NGX_HTTP_CREATED) {
/* 201 */
err = 0;
- r->header_only = 1;

} else if (error == NGX_HTTP_NO_CONTENT) {
/* 204 */
@@ -636,7 +635,7 @@ ngx_http_send_special_response(ngx_http_
r->headers_out.content_type_lowcase = NULL;

} else {
- r->headers_out.content_length_n = -1;
+ r->headers_out.content_length_n = 0;
}

if (r->headers_out.content_length) {
@@ -654,7 +653,7 @@ ngx_http_send_special_response(ngx_http_
}

if (ngx_http_error_pages[err].len == 0) {
- return NGX_OK;
+ return ngx_http_send_special(r, NGX_HTTP_LAST);
}

b = ngx_calloc_buf(r->pool);

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[PATCH 00 of 25] generic patch queue

Maxim Dounin 1699 September 06, 2011 12:10PM

[PATCH 01 of 25] Handling of If-Range with add_header Last-Modified

Maxim Dounin 716 September 06, 2011 12:10PM

[PATCH 02 of 25] Fix for incorrect 201 replies from dav module

Maxim Dounin 726 September 06, 2011 12:10PM

[PATCH 03 of 25] Fix for double content when return is used in error_page handler

Maxim Dounin 696 September 06, 2011 12:10PM

[PATCH 04 of 25] Fix for "return 202" not discarding body

Maxim Dounin 685 September 06, 2011 12:10PM

[PATCH 05 of 25] Incorrect special case for "return 204" removed

Maxim Dounin 677 September 06, 2011 12:10PM

[PATCH 06 of 25] Clear old Location header (if any) while adding new one

Maxim Dounin 735 September 06, 2011 12:10PM

[PATCH 07 of 25] Better handling of late upstream creation

Maxim Dounin 778 September 06, 2011 12:10PM

[PATCH 08 of 25] Gzip filter: handle empty flush buffers

Maxim Dounin 751 September 06, 2011 12:12PM

[PATCH 09 of 25] Fix for connection drops with AIO

Maxim Dounin 687 September 06, 2011 12:12PM

[PATCH 10 of 25] Fix for socket leak with "aio sendfile" and "limit_rate"

Maxim Dounin 749 September 06, 2011 12:12PM

[PATCH 11 of 25] Handling of Content-Encoding set from perl

Maxim Dounin 710 September 06, 2011 12:12PM

[PATCH 12 of 25] Gzip static: "always" parameter in "gzip_static" directive

Maxim Dounin 687 September 06, 2011 12:12PM

[PATCH 13 of 25] Memcached: memcached_gzip_flag directive

Maxim Dounin 806 September 06, 2011 12:12PM

[PATCH 14 of 25] Mail: handle smtp multiline replies

Maxim Dounin 643 September 06, 2011 12:12PM

[PATCH 15 of 25] Additional headers for proxy_ignore_headers/fastcgi_ignore_headers

Maxim Dounin 727 September 06, 2011 12:12PM

[PATCH 16 of 25] Fix for proxy_store leaving temporary files for subrequests

Maxim Dounin 770 September 06, 2011 12:12PM

[PATCH 17 of 25] Cache: fix for sending of empty responses

Maxim Dounin 657 September 06, 2011 12:12PM

[PATCH 18 of 25] Cache: fix for sending of stale responses

Maxim Dounin 808 September 06, 2011 12:14PM

[PATCH 19 of 25] Variables: honor no_cacheable for not_found variables

Maxim Dounin 790 September 06, 2011 12:14PM

[PATCH 20 of 25] Core: protection from subrequest loops

Maxim Dounin 693 September 06, 2011 12:14PM

[PATCH 21 of 25] Core: protection from cycles with named locations and post_action

Maxim Dounin 716 September 06, 2011 12:14PM

[PATCH 22 of 25] Autoindex: escape '?' in file names

Maxim Dounin 794 September 06, 2011 12:14PM

[PATCH 23 of 25] Autoindex: escape html in file names

Maxim Dounin 787 September 06, 2011 12:14PM

[PATCH 24 of 25] Unbreak build with embedded perl and --with-openssl

Maxim Dounin 828 September 06, 2011 12:14PM

[PATCH 25 of 25] Time parsing cleanup

Maxim Dounin 787 September 06, 2011 12:14PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 241
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready