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://mailman.nginx.org/pipermail/nginx-ru/2010-October/037535.html
if (error == NGX_HTTP_CREATED) {
/* 201 */
err = 0;
- r->header_only = 1;
} else if (error == NGX_HTTP_NO_CONTENT) {
/* 204 */
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) {
}
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);