set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev
15 years ago
429 | 429 |
unsigned plain_http:1;
|
430 | 430 |
unsigned chunked:1;
|
431 | 431 |
unsigned header_only:1;
|
|
432 |
unsigned zero_body:1;
|
432 | 433 |
unsigned keepalive:1;
|
433 | 434 |
unsigned lingering_close:1;
|
434 | 435 |
unsigned discard_body:1;
|
840 | 840 |
|
841 | 841 |
if (code->status == NGX_HTTP_NO_CONTENT) {
|
842 | 842 |
e->request->header_only = 1;
|
|
843 |
e->request->zero_body = 1;
|
843 | 844 |
}
|
844 | 845 |
|
845 | 846 |
e->ip += sizeof(ngx_http_script_return_code_t) - sizeof(uintptr_t);
|
454 | 454 |
|
455 | 455 |
msie_padding = 0;
|
456 | 456 |
|
457 | |
if (error_pages[err].len) {
|
458 | |
r->headers_out.content_length_n = error_pages[err].len
|
459 | |
+ sizeof(error_tail) - 1;
|
460 | |
|
461 | |
if (clcf->msie_padding
|
462 | |
&& r->headers_in.msie
|
463 | |
&& r->http_version >= NGX_HTTP_VERSION_10
|
464 | |
&& error >= NGX_HTTP_BAD_REQUEST
|
465 | |
&& error != NGX_HTTP_REQUEST_URI_TOO_LARGE)
|
466 | |
{
|
467 | |
r->headers_out.content_length_n += sizeof(ngx_http_msie_stub) - 1;
|
468 | |
msie_padding = 1;
|
469 | |
}
|
470 | |
|
471 | |
r->headers_out.content_type.len = sizeof("text/html") - 1;
|
472 | |
r->headers_out.content_type.data = (u_char *) "text/html";
|
|
457 |
if (!r->zero_body) {
|
|
458 |
if (error_pages[err].len) {
|
|
459 |
r->headers_out.content_length_n = error_pages[err].len
|
|
460 |
+ sizeof(error_tail) - 1;
|
|
461 |
|
|
462 |
if (clcf->msie_padding
|
|
463 |
&& r->headers_in.msie
|
|
464 |
&& r->http_version >= NGX_HTTP_VERSION_10
|
|
465 |
&& error >= NGX_HTTP_BAD_REQUEST
|
|
466 |
&& error != NGX_HTTP_REQUEST_URI_TOO_LARGE)
|
|
467 |
{
|
|
468 |
r->headers_out.content_length_n +=
|
|
469 |
sizeof(ngx_http_msie_stub) - 1;
|
|
470 |
msie_padding = 1;
|
|
471 |
}
|
|
472 |
|
|
473 |
r->headers_out.content_type.len = sizeof("text/html") - 1;
|
|
474 |
r->headers_out.content_type.data = (u_char *) "text/html";
|
|
475 |
|
|
476 |
} else {
|
|
477 |
r->headers_out.content_length_n = -1;
|
|
478 |
}
|
473 | 479 |
|
474 | 480 |
} else {
|
475 | |
r->headers_out.content_length_n = -1;
|
|
481 |
r->headers_out.content_length_n = 0;
|
|
482 |
err = 0;
|
476 | 483 |
}
|
477 | 484 |
|
478 | 485 |
if (r->headers_out.content_length) {
|