annotate src/http/ngx_http_special_response.c @ 4935:7bd1c839af3b

Request body: improved handling of incorrect chunked request body. While discarding chunked request body in some cases after detecting request body corruption no error was returned, while it was possible to correctly return 400 Bad Request. If error is detected too late, make sure to properly close connection. Additionally, in ngx_http_special_response_handler() don't return body of 500 Internal Server Error to a client if ngx_http_discard_request_body() fails, but disable keepalive and continue.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 26 Nov 2012 18:00:14 +0000
parents 812c4765c954
children 6b479db5b52b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
1
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
2 /*
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4206
diff changeset
4 * Copyright (C) Nginx, Inc.
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
5 */
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
6
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
7
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
8 #include <ngx_config.h>
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
9 #include <ngx_core.h>
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
10 #include <ngx_http.h>
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
11 #include <nginx.h>
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
14 static ngx_int_t ngx_http_send_error_page(ngx_http_request_t *r,
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
15 ngx_http_err_page_t *err_page);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
16 static ngx_int_t ngx_http_send_special_response(ngx_http_request_t *r,
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
17 ngx_http_core_loc_conf_t *clcf, ngx_uint_t err);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
18 static ngx_int_t ngx_http_send_refresh(ngx_http_request_t *r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
19
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
20
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
21 static u_char ngx_http_error_full_tail[] =
1592
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
22 "<hr><center>" NGINX_VER "</center>" CRLF
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
23 "</body>" CRLF
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
24 "</html>" CRLF
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
25 ;
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
26
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
27
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
28 static u_char ngx_http_error_tail[] =
1592
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
29 "<hr><center>nginx</center>" CRLF
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
30 "</body>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
31 "</html>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
32 ;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
33
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
34
3316
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
35 static u_char ngx_http_msie_padding[] =
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
36 "<!-- a padding to disable MSIE and Chrome friendly error page -->" CRLF
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
37 "<!-- a padding to disable MSIE and Chrome friendly error page -->" CRLF
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
38 "<!-- a padding to disable MSIE and Chrome friendly error page -->" CRLF
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
39 "<!-- a padding to disable MSIE and Chrome friendly error page -->" CRLF
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
40 "<!-- a padding to disable MSIE and Chrome friendly error page -->" CRLF
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
41 "<!-- a padding to disable MSIE and Chrome friendly error page -->" CRLF
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
42 ;
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
43
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
44
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
45 static u_char ngx_http_msie_refresh_head[] =
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
46 "<html><head><meta http-equiv=\"Refresh\" content=\"0; URL=";
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
47
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
48
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
49 static u_char ngx_http_msie_refresh_tail[] =
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
50 "\"></head><body></body></html>" CRLF;
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
51
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
52
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
53 static char ngx_http_error_301_page[] =
144
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
54 "<html>" CRLF
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
55 "<head><title>301 Moved Permanently</title></head>" CRLF
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
56 "<body bgcolor=\"white\">" CRLF
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
57 "<center><h1>301 Moved Permanently</h1></center>" CRLF
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
58 ;
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
59
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
60
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
61 static char ngx_http_error_302_page[] =
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
62 "<html>" CRLF
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
63 "<head><title>302 Found</title></head>" CRLF
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
64 "<body bgcolor=\"white\">" CRLF
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
65 "<center><h1>302 Found</h1></center>" CRLF
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
66 ;
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
67
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
68
3631
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
69 static char ngx_http_error_303_page[] =
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
70 "<html>" CRLF
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
71 "<head><title>303 See Other</title></head>" CRLF
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
72 "<body bgcolor=\"white\">" CRLF
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
73 "<center><h1>303 See Other</h1></center>" CRLF
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
74 ;
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
75
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
76
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
77 static char ngx_http_error_307_page[] =
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
78 "<html>" CRLF
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
79 "<head><title>307 Temporary Redirect</title></head>" CRLF
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
80 "<body bgcolor=\"white\">" CRLF
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
81 "<center><h1>307 Temporary Redirect</h1></center>" CRLF
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
82 ;
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
83
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
84
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
85 static char ngx_http_error_400_page[] =
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
86 "<html>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
87 "<head><title>400 Bad Request</title></head>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
88 "<body bgcolor=\"white\">" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
89 "<center><h1>400 Bad Request</h1></center>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
90 ;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
91
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
92
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
93 static char ngx_http_error_401_page[] =
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
94 "<html>" CRLF
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
95 "<head><title>401 Authorization Required</title></head>" CRLF
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
96 "<body bgcolor=\"white\">" CRLF
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
97 "<center><h1>401 Authorization Required</h1></center>" CRLF
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
98 ;
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
99
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
100
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
101 static char ngx_http_error_402_page[] =
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
102 "<html>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
103 "<head><title>402 Payment Required</title></head>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
104 "<body bgcolor=\"white\">" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
105 "<center><h1>402 Payment Required</h1></center>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
106 ;
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
107
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
108
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
109 static char ngx_http_error_403_page[] =
45
f1ee46c036a4 nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
110 "<html>" CRLF
f1ee46c036a4 nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
111 "<head><title>403 Forbidden</title></head>" CRLF
f1ee46c036a4 nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
112 "<body bgcolor=\"white\">" CRLF
f1ee46c036a4 nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
113 "<center><h1>403 Forbidden</h1></center>" CRLF
f1ee46c036a4 nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
114 ;
f1ee46c036a4 nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
115
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
116
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
117 static char ngx_http_error_404_page[] =
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
118 "<html>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
119 "<head><title>404 Not Found</title></head>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
120 "<body bgcolor=\"white\">" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
121 "<center><h1>404 Not Found</h1></center>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
122 ;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
123
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
124
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
125 static char ngx_http_error_405_page[] =
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
126 "<html>" CRLF
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
127 "<head><title>405 Not Allowed</title></head>" CRLF
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
128 "<body bgcolor=\"white\">" CRLF
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
129 "<center><h1>405 Not Allowed</h1></center>" CRLF
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
130 ;
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
131
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
132
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
133 static char ngx_http_error_406_page[] =
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
134 "<html>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
135 "<head><title>406 Not Acceptable</title></head>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
136 "<body bgcolor=\"white\">" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
137 "<center><h1>406 Not Acceptable</h1></center>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
138 ;
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
139
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
140
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
141 static char ngx_http_error_408_page[] =
69
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
142 "<html>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
143 "<head><title>408 Request Time-out</title></head>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
144 "<body bgcolor=\"white\">" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
145 "<center><h1>408 Request Time-out</h1></center>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
146 ;
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
147
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
148
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
149 static char ngx_http_error_409_page[] =
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
150 "<html>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
151 "<head><title>409 Conflict</title></head>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
152 "<body bgcolor=\"white\">" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
153 "<center><h1>409 Conflict</h1></center>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
154 ;
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
155
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
156
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
157 static char ngx_http_error_410_page[] =
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
158 "<html>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
159 "<head><title>410 Gone</title></head>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
160 "<body bgcolor=\"white\">" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
161 "<center><h1>410 Gone</h1></center>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
162 ;
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
163
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
164
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
165 static char ngx_http_error_411_page[] =
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
166 "<html>" CRLF
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
167 "<head><title>411 Length Required</title></head>" CRLF
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
168 "<body bgcolor=\"white\">" CRLF
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
169 "<center><h1>411 Length Required</h1></center>" CRLF
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
170 ;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
171
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
172
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
173 static char ngx_http_error_412_page[] =
1057
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
174 "<html>" CRLF
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
175 "<head><title>412 Precondition Failed</title></head>" CRLF
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
176 "<body bgcolor=\"white\">" CRLF
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
177 "<center><h1>412 Precondition Failed</h1></center>" CRLF
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
178 ;
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
179
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
180
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
181 static char ngx_http_error_413_page[] =
162
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
182 "<html>" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
183 "<head><title>413 Request Entity Too Large</title></head>" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
184 "<body bgcolor=\"white\">" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
185 "<center><h1>413 Request Entity Too Large</h1></center>" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
186 ;
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
187
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
188
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
189 static char ngx_http_error_414_page[] =
67
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
190 "<html>" CRLF
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
191 "<head><title>414 Request-URI Too Large</title></head>" CRLF
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
192 "<body bgcolor=\"white\">" CRLF
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
193 "<center><h1>414 Request-URI Too Large</h1></center>" CRLF
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
194 ;
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
195
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
196
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
197 static char ngx_http_error_415_page[] =
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
198 "<html>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
199 "<head><title>415 Unsupported Media Type</title></head>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
200 "<body bgcolor=\"white\">" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
201 "<center><h1>415 Unsupported Media Type</h1></center>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
202 ;
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
203
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
204
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
205 static char ngx_http_error_416_page[] =
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
206 "<html>" CRLF
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
207 "<head><title>416 Requested Range Not Satisfiable</title></head>" CRLF
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
208 "<body bgcolor=\"white\">" CRLF
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
209 "<center><h1>416 Requested Range Not Satisfiable</h1></center>" CRLF
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
210 ;
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
211
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
212
3848
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
213 static char ngx_http_error_494_page[] =
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
214 "<html>" CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
215 "<head><title>400 Request Header Or Cookie Too Large</title></head>"
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
216 CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
217 "<body bgcolor=\"white\">" CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
218 "<center><h1>400 Bad Request</h1></center>" CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
219 "<center>Request Header Or Cookie Too Large</center>" CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
220 ;
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
221
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
222
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
223 static char ngx_http_error_495_page[] =
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
224 "<html>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
225 "<head><title>400 The SSL certificate error</title></head>"
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
226 CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
227 "<body bgcolor=\"white\">" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
228 "<center><h1>400 Bad Request</h1></center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
229 "<center>The SSL certificate error</center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
230 ;
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
231
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
232
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
233 static char ngx_http_error_496_page[] =
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
234 "<html>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
235 "<head><title>400 No required SSL certificate was sent</title></head>"
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
236 CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
237 "<body bgcolor=\"white\">" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
238 "<center><h1>400 Bad Request</h1></center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
239 "<center>No required SSL certificate was sent</center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
240 ;
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
241
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
242
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
243 static char ngx_http_error_497_page[] =
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
244 "<html>" CRLF
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 384
diff changeset
245 "<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>"
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 384
diff changeset
246 CRLF
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
247 "<body bgcolor=\"white\">" CRLF
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 384
diff changeset
248 "<center><h1>400 Bad Request</h1></center>" CRLF
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 384
diff changeset
249 "<center>The plain HTTP request was sent to HTTPS port</center>" CRLF
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
250 ;
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
251
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
252
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
253 static char ngx_http_error_500_page[] =
47
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
254 "<html>" CRLF
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
255 "<head><title>500 Internal Server Error</title></head>" CRLF
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
256 "<body bgcolor=\"white\">" CRLF
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
257 "<center><h1>500 Internal Server Error</h1></center>" CRLF
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
258 ;
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
259
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
260
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
261 static char ngx_http_error_501_page[] =
233
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
262 "<html>" CRLF
4920
812c4765c954 Request body: fixed "501 Not Implemented" error handling.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4746
diff changeset
263 "<head><title>501 Not Implemented</title></head>" CRLF
233
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
264 "<body bgcolor=\"white\">" CRLF
4920
812c4765c954 Request body: fixed "501 Not Implemented" error handling.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4746
diff changeset
265 "<center><h1>501 Not Implemented</h1></center>" CRLF
233
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
266 ;
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
267
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
268
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
269 static char ngx_http_error_502_page[] =
69
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
270 "<html>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
271 "<head><title>502 Bad Gateway</title></head>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
272 "<body bgcolor=\"white\">" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
273 "<center><h1>502 Bad Gateway</h1></center>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
274 ;
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
275
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
276
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
277 static char ngx_http_error_503_page[] =
162
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
278 "<html>" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
279 "<head><title>503 Service Temporarily Unavailable</title></head>" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
280 "<body bgcolor=\"white\">" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
281 "<center><h1>503 Service Temporarily Unavailable</h1></center>" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
282 ;
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
283
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
284
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
285 static char ngx_http_error_504_page[] =
69
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
286 "<html>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
287 "<head><title>504 Gateway Time-out</title></head>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
288 "<body bgcolor=\"white\">" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
289 "<center><h1>504 Gateway Time-out</h1></center>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
290 ;
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
291
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
292
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
293 static char ngx_http_error_507_page[] =
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
294 "<html>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
295 "<head><title>507 Insufficient Storage</title></head>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
296 "<body bgcolor=\"white\">" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
297 "<center><h1>507 Insufficient Storage</h1></center>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
298 ;
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
299
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
300
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
301 static ngx_str_t ngx_http_error_pages[] = {
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
302
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
303 ngx_null_string, /* 201, 204 */
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
304
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
305 #define NGX_HTTP_LAST_2XX 202
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
306 #define NGX_HTTP_OFF_3XX (NGX_HTTP_LAST_2XX - 201)
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
307
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
308 /* ngx_null_string, */ /* 300 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
309 ngx_string(ngx_http_error_301_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
310 ngx_string(ngx_http_error_302_page),
3631
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
311 ngx_string(ngx_http_error_303_page),
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
312 ngx_null_string, /* 304 */
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
313 ngx_null_string, /* 305 */
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
314 ngx_null_string, /* 306 */
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
315 ngx_string(ngx_http_error_307_page),
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
316
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
317 #define NGX_HTTP_LAST_3XX 308
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
318 #define NGX_HTTP_OFF_4XX (NGX_HTTP_LAST_3XX - 301 + NGX_HTTP_OFF_3XX)
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
319
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
320 ngx_string(ngx_http_error_400_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
321 ngx_string(ngx_http_error_401_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
322 ngx_string(ngx_http_error_402_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
323 ngx_string(ngx_http_error_403_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
324 ngx_string(ngx_http_error_404_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
325 ngx_string(ngx_http_error_405_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
326 ngx_string(ngx_http_error_406_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
327 ngx_null_string, /* 407 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
328 ngx_string(ngx_http_error_408_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
329 ngx_string(ngx_http_error_409_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
330 ngx_string(ngx_http_error_410_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
331 ngx_string(ngx_http_error_411_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
332 ngx_string(ngx_http_error_412_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
333 ngx_string(ngx_http_error_413_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
334 ngx_string(ngx_http_error_414_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
335 ngx_string(ngx_http_error_415_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
336 ngx_string(ngx_http_error_416_page),
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
337
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
338 #define NGX_HTTP_LAST_4XX 417
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
339 #define NGX_HTTP_OFF_5XX (NGX_HTTP_LAST_4XX - 400 + NGX_HTTP_OFF_4XX)
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
340
3848
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
341 ngx_string(ngx_http_error_494_page), /* 494, request header too large */
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
342 ngx_string(ngx_http_error_495_page), /* 495, https certificate error */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
343 ngx_string(ngx_http_error_496_page), /* 496, https no certificate */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
344 ngx_string(ngx_http_error_497_page), /* 497, http to https */
1672
bc93d5ab3e27 fix comment
Igor Sysoev <igor@sysoev.ru>
parents: 1604
diff changeset
345 ngx_string(ngx_http_error_404_page), /* 498, canceled */
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
346 ngx_null_string, /* 499, client has closed connection */
335
d4241d7787fe nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
347
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
348 ngx_string(ngx_http_error_500_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
349 ngx_string(ngx_http_error_501_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
350 ngx_string(ngx_http_error_502_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
351 ngx_string(ngx_http_error_503_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
352 ngx_string(ngx_http_error_504_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
353 ngx_null_string, /* 505 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
354 ngx_null_string, /* 506 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
355 ngx_string(ngx_http_error_507_page)
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
356
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
357 #define NGX_HTTP_LAST_5XX 508
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
358
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
359 };
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
360
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
361
717
08652aae6fab fix msvc build failure introduced by previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 716
diff changeset
362 static ngx_str_t ngx_http_get_name = { 3, (u_char *) "GET " };
716
d8d7c39e3a76 allowing handling 400 errors via proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents: 681
diff changeset
363
d8d7c39e3a76 allowing handling 400 errors via proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents: 681
diff changeset
364
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
365 ngx_int_t
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
366 ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error)
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
367 {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
368 ngx_uint_t i, err;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
369 ngx_http_err_page_t *err_page;
158
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
370 ngx_http_core_loc_conf_t *clcf;
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
371
2040
eba265857dc2 fix building by bcc/etc introduced in r2038
Igor Sysoev <igor@sysoev.ru>
parents: 2037
diff changeset
372 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
2037
aee889ff25ea fix debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
373 "http special response: %d, \"%V?%V\"",
aee889ff25ea fix debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
374 error, &r->uri, &r->args);
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
375
677
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
376 r->err_status = error;
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
377
2019
e720be7bc195 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1982
diff changeset
378 if (r->keepalive) {
68
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
379 switch (error) {
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
380 case NGX_HTTP_BAD_REQUEST:
162
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
381 case NGX_HTTP_REQUEST_ENTITY_TOO_LARGE:
68
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
382 case NGX_HTTP_REQUEST_URI_TOO_LARGE:
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
383 case NGX_HTTP_TO_HTTPS:
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
384 case NGX_HTTPS_CERT_ERROR:
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
385 case NGX_HTTPS_NO_CERT:
68
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
386 case NGX_HTTP_INTERNAL_SERVER_ERROR:
4920
812c4765c954 Request body: fixed "501 Not Implemented" error handling.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4746
diff changeset
387 case NGX_HTTP_NOT_IMPLEMENTED:
68
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
388 r->keepalive = 0;
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
389 }
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
390 }
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
391
4201
1d52dd2b5bb7 Stylistic change in checking the boolean expression.
Ruslan Ermilov <ru@nginx.com>
parents: 4146
diff changeset
392 if (r->lingering_close) {
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
393 switch (error) {
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
394 case NGX_HTTP_BAD_REQUEST:
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
395 case NGX_HTTP_TO_HTTPS:
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
396 case NGX_HTTPS_CERT_ERROR:
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
397 case NGX_HTTPS_NO_CERT:
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
398 r->lingering_close = 0;
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
399 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
400 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
401
675
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 673
diff changeset
402 r->headers_out.content_type.len = 0;
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 673
diff changeset
403
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
404 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
405
2174
20a7fc523aec disable error_page loop in 500 error when recursive errors are enabled
Igor Sysoev <igor@sysoev.ru>
parents: 2040
diff changeset
406 if (!r->error_page && clcf->error_pages && r->uri_changes != 0) {
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
407
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
408 if (clcf->recursive_error_pages == 0) {
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
409 r->error_page = 1;
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
410 }
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
411
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
412 err_page = clcf->error_pages->elts;
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
413
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
414 for (i = 0; i < clcf->error_pages->nelts; i++) {
326
8733703a37f3 nginx-0.0.3-2004-04-26-00:13:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 323
diff changeset
415 if (err_page[i].status == error) {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
416 return ngx_http_send_error_page(r, &err_page[i]);
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
417 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
418 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
419 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
420
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
421 r->expect_tested = 1;
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
422
2191
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
423 if (ngx_http_discard_request_body(r) != NGX_OK) {
4935
7bd1c839af3b Request body: improved handling of incorrect chunked request body.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4920
diff changeset
424 r->keepalive = 0;
2191
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
425 }
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
426
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
427 if (clcf->msie_refresh
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
428 && r->headers_in.msie
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
429 && (error == NGX_HTTP_MOVED_PERMANENTLY
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
430 || error == NGX_HTTP_MOVED_TEMPORARILY))
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
431 {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
432 return ngx_http_send_refresh(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
433 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
434
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
435 if (error == NGX_HTTP_CREATED) {
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
436 /* 201 */
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
437 err = 0;
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
438
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
439 } else if (error == NGX_HTTP_NO_CONTENT) {
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
440 /* 204 */
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
441 err = 0;
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
442
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
443 } else if (error >= NGX_HTTP_MOVED_PERMANENTLY
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
444 && error < NGX_HTTP_LAST_3XX)
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
445 {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
446 /* 3XX */
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
447 err = error - NGX_HTTP_MOVED_PERMANENTLY + NGX_HTTP_OFF_3XX;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
448
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
449 } else if (error >= NGX_HTTP_BAD_REQUEST
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
450 && error < NGX_HTTP_LAST_4XX)
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
451 {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
452 /* 4XX */
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
453 err = error - NGX_HTTP_BAD_REQUEST + NGX_HTTP_OFF_4XX;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
454
3845
11c68a5ed419 rename NGX_HTTP_OWN_CODES to NGX_HTTP_NGINX_CODES
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
455 } else if (error >= NGX_HTTP_NGINX_CODES
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
456 && error < NGX_HTTP_LAST_5XX)
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
457 {
335
d4241d7787fe nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
458 /* 49X, 5XX */
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
459 err = error - NGX_HTTP_NGINX_CODES + NGX_HTTP_OFF_5XX;
335
d4241d7787fe nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
460 switch (error) {
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
461 case NGX_HTTP_TO_HTTPS:
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
462 case NGX_HTTPS_CERT_ERROR:
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
463 case NGX_HTTPS_NO_CERT:
3848
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
464 case NGX_HTTP_REQUEST_HEADER_TOO_LARGE:
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
465 r->err_status = NGX_HTTP_BAD_REQUEST;
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
466 break;
335
d4241d7787fe nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
467 }
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
468
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
469 } else {
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
470 /* unknown code, zero body */
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
471 err = 0;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
472 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
473
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
474 return ngx_http_send_special_response(r, clcf, err);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
475 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
476
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
477
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
478 ngx_int_t
2821
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
479 ngx_http_filter_finalize_request(ngx_http_request_t *r, ngx_module_t *m,
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
480 ngx_int_t error)
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
481 {
2821
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
482 void *ctx;
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
483 ngx_int_t rc;
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
484
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
485 ngx_http_clean_header(r);
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
486
2822
5364c3419a62 fix the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 2821
diff changeset
487 ctx = NULL;
5364c3419a62 fix the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 2821
diff changeset
488
2821
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
489 if (m) {
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
490 ctx = r->ctx[m->ctx_index];
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
491 }
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
492
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
493 /* clear the modules contexts */
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
494 ngx_memzero(r->ctx, sizeof(void *) * ngx_http_max_module);
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
495
2821
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
496 if (m) {
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
497 r->ctx[m->ctx_index] = ctx;
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
498 }
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
499
2819
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
500 r->filter_finalize = 1;
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
501
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
502 rc = ngx_http_special_response_handler(r, error);
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
503
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
504 /* NGX_ERROR resets any pending data */
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
505
2819
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
506 switch (rc) {
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
507
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
508 case NGX_OK:
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
509 case NGX_DONE:
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
510 return NGX_ERROR;
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
511
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
512 default:
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
513 return rc;
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
514 }
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
515 }
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
516
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
517
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
518 void
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
519 ngx_http_clean_header(ngx_http_request_t *r)
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
520 {
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
521 ngx_memzero(&r->headers_out.status,
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
522 sizeof(ngx_http_headers_out_t)
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
523 - offsetof(ngx_http_headers_out_t, status));
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
524
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
525 r->headers_out.headers.part.nelts = 0;
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
526 r->headers_out.headers.part.next = NULL;
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
527 r->headers_out.headers.last = &r->headers_out.headers.part;
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
528
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
529 r->headers_out.content_length_n = -1;
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
530 r->headers_out.last_modified_time = -1;
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
531 }
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
532
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
533
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
534 static ngx_int_t
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
535 ngx_http_send_error_page(ngx_http_request_t *r, ngx_http_err_page_t *err_page)
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
536 {
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
537 ngx_int_t overwrite;
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
538 ngx_str_t uri, args;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
539 ngx_table_elt_t *location;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
540 ngx_http_core_loc_conf_t *clcf;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
541
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
542 overwrite = err_page->overwrite;
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
543
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
544 if (overwrite && overwrite != NGX_HTTP_OK) {
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
545 r->expect_tested = 1;
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
546 }
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
547
3781
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
548 if (overwrite >= 0) {
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
549 r->err_status = overwrite;
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
550 }
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
551
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
552 if (ngx_http_complex_value(r, &err_page->value, &uri) != NGX_OK) {
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
553 return NGX_ERROR;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
554 }
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
555
2685
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
556 if (uri.data[0] == '/') {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
557
2685
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
558 if (err_page->value.lengths) {
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
559 ngx_http_split_args(r, &uri, &args);
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
560
2685
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
561 } else {
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
562 args = err_page->args;
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
563 }
1922
d23396f2a902 do not change method while error redirection to named location
Igor Sysoev <igor@sysoev.ru>
parents: 1672
diff changeset
564
2192
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
565 if (r->method != NGX_HTTP_HEAD) {
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
566 r->method = NGX_HTTP_GET;
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
567 r->method_name = ngx_http_get_name;
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
568 }
1922
d23396f2a902 do not change method while error redirection to named location
Igor Sysoev <igor@sysoev.ru>
parents: 1672
diff changeset
569
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
570 return ngx_http_internal_redirect(r, &uri, &args);
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
571 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
572
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
573 if (uri.data[0] == '@') {
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
574 return ngx_http_named_location(r, &uri);
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
575 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
576
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
577 location = ngx_list_push(&r->headers_out.headers);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
578
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
579 if (location == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
580 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
581 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
582
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
583 if (overwrite != NGX_HTTP_MOVED_PERMANENTLY
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
584 && overwrite != NGX_HTTP_MOVED_TEMPORARILY
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
585 && overwrite != NGX_HTTP_SEE_OTHER
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
586 && overwrite != NGX_HTTP_TEMPORARY_REDIRECT)
3860
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
587 {
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
588 r->err_status = NGX_HTTP_MOVED_TEMPORARILY;
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
589 }
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
590
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
591 location->hash = 1;
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3316
diff changeset
592 ngx_str_set(&location->key, "Location");
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
593 location->value = uri;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
594
4206
1a94a56a4e5d Clear old Location header (if any) while adding a new one.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4201
diff changeset
595 ngx_http_clear_location(r);
1a94a56a4e5d Clear old Location header (if any) while adding a new one.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4201
diff changeset
596
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
597 r->headers_out.location = location;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
598
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
599 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
600
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
601 if (clcf->msie_refresh && r->headers_in.msie) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
602 return ngx_http_send_refresh(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
603 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
604
3781
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
605 return ngx_http_send_special_response(r, clcf, r->err_status
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
606 - NGX_HTTP_MOVED_PERMANENTLY
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
607 + NGX_HTTP_OFF_3XX);
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
608 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
609
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
610
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
611 static ngx_int_t
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
612 ngx_http_send_special_response(ngx_http_request_t *r,
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
613 ngx_http_core_loc_conf_t *clcf, ngx_uint_t err)
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
614 {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
615 u_char *tail;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
616 size_t len;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
617 ngx_int_t rc;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
618 ngx_buf_t *b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
619 ngx_uint_t msie_padding;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
620 ngx_chain_t out[3];
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
621
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
622 if (clcf->server_tokens) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
623 len = sizeof(ngx_http_error_full_tail) - 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
624 tail = ngx_http_error_full_tail;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
625
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
626 } else {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
627 len = sizeof(ngx_http_error_tail) - 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
628 tail = ngx_http_error_tail;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
629 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
630
356
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
631 msie_padding = 0;
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
632
3663
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
633 if (ngx_http_error_pages[err].len) {
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
634 r->headers_out.content_length_n = ngx_http_error_pages[err].len + len;
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
635 if (clcf->msie_padding
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
636 && (r->headers_in.msie || r->headers_in.chrome)
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
637 && r->http_version >= NGX_HTTP_VERSION_10
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
638 && err >= NGX_HTTP_OFF_4XX)
3663
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
639 {
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
640 r->headers_out.content_length_n +=
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
641 sizeof(ngx_http_msie_padding) - 1;
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
642 msie_padding = 1;
331
f168a88e93f7 nginx-0.0.3-2004-05-04-21:56:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 326
diff changeset
643 }
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
644
3663
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
645 r->headers_out.content_type_len = sizeof("text/html") - 1;
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
646 ngx_str_set(&r->headers_out.content_type, "text/html");
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
647 r->headers_out.content_type_lowcase = NULL;
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
648
68
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
649 } else {
4146
55acacac22df Fix for incorrect 201 replies from dav module.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3860
diff changeset
650 r->headers_out.content_length_n = 0;
165
894a01c6aea3 nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 164
diff changeset
651 }
894a01c6aea3 nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 164
diff changeset
652
894a01c6aea3 nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 164
diff changeset
653 if (r->headers_out.content_length) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
654 r->headers_out.content_length->hash = 0;
153
c71aeb75c071 nginx-0.0.1-2003-10-21-20:49:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 148
diff changeset
655 r->headers_out.content_length = NULL;
68
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
656 }
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
657
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
658 ngx_http_clear_accept_ranges(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
659 ngx_http_clear_last_modified(r);
4746
4a18bf1833a9 Entity tags: clear on entity changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4491
diff changeset
660 ngx_http_clear_etag(r);
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
661
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
662 rc = ngx_http_send_header(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
663
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
664 if (rc == NGX_ERROR || r->header_only) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
665 return rc;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
666 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
667
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
668 if (ngx_http_error_pages[err].len == 0) {
4146
55acacac22df Fix for incorrect 201 replies from dav module.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3860
diff changeset
669 return ngx_http_send_special(r, NGX_HTTP_LAST);
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
670 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
671
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
672 b = ngx_calloc_buf(r->pool);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
673 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
674 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
675 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
676
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
677 b->memory = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
678 b->pos = ngx_http_error_pages[err].data;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
679 b->last = ngx_http_error_pages[err].data + ngx_http_error_pages[err].len;
1298
458e041fc902 msie_refresh should escape at least '"' to prevent XSS
Igor Sysoev <igor@sysoev.ru>
parents: 1057
diff changeset
680
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
681 out[0].buf = b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
682 out[0].next = &out[1];
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
683
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
684 b = ngx_calloc_buf(r->pool);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
685 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
686 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
687 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
688
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
689 b->memory = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
690
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
691 b->pos = tail;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
692 b->last = tail + len;
1298
458e041fc902 msie_refresh should escape at least '"' to prevent XSS
Igor Sysoev <igor@sysoev.ru>
parents: 1057
diff changeset
693
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
694 out[1].buf = b;
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2019
diff changeset
695 out[1].next = NULL;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
696
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
697 if (msie_padding) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
698 b = ngx_calloc_buf(r->pool);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
699 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
700 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
701 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
702
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
703 b->memory = 1;
3316
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
704 b->pos = ngx_http_msie_padding;
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
705 b->last = ngx_http_msie_padding + sizeof(ngx_http_msie_padding) - 1;
1298
458e041fc902 msie_refresh should escape at least '"' to prevent XSS
Igor Sysoev <igor@sysoev.ru>
parents: 1057
diff changeset
706
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
707 out[1].next = &out[2];
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
708 out[2].buf = b;
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2019
diff changeset
709 out[2].next = NULL;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
710 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
711
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
712 if (r == r->main) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
713 b->last_buf = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
714 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
715
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
716 b->last_in_chain = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
717
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
718 return ngx_http_output_filter(r, &out[0]);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
719 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
720
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
721
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
722 static ngx_int_t
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
723 ngx_http_send_refresh(ngx_http_request_t *r)
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
724 {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
725 u_char *p, *location;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
726 size_t len, size;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
727 uintptr_t escape;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
728 ngx_int_t rc;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
729 ngx_buf_t *b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
730 ngx_chain_t out;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
731
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
732 len = r->headers_out.location->value.len;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
733 location = r->headers_out.location->value.data;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
734
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
735 escape = 2 * ngx_escape_uri(NULL, location, len, NGX_ESCAPE_REFRESH);
1298
458e041fc902 msie_refresh should escape at least '"' to prevent XSS
Igor Sysoev <igor@sysoev.ru>
parents: 1057
diff changeset
736
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
737 size = sizeof(ngx_http_msie_refresh_head) - 1
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
738 + escape + len
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
739 + sizeof(ngx_http_msie_refresh_tail) - 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
740
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
741 r->err_status = NGX_HTTP_OK;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
742
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
743 r->headers_out.content_type_len = sizeof("text/html") - 1;
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3316
diff changeset
744 ngx_str_set(&r->headers_out.content_type, "text/html");
2882
896db5a09bd2 reset content_type hash value, this fixes a bug when XSLT responses
Igor Sysoev <igor@sysoev.ru>
parents: 2822
diff changeset
745 r->headers_out.content_type_lowcase = NULL;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
746
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
747 r->headers_out.location->hash = 0;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
748 r->headers_out.location = NULL;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
749
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
750 r->headers_out.content_length_n = size;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
751
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
752 if (r->headers_out.content_length) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
753 r->headers_out.content_length->hash = 0;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
754 r->headers_out.content_length = NULL;
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
755 }
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
756
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
757 ngx_http_clear_accept_ranges(r);
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
758 ngx_http_clear_last_modified(r);
4746
4a18bf1833a9 Entity tags: clear on entity changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4491
diff changeset
759 ngx_http_clear_etag(r);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
760
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
761 rc = ngx_http_send_header(r);
142
cb77c084acdb nginx-0.0.1-2003-10-09-11:00:45 import
Igor Sysoev <igor@sysoev.ru>
parents: 103
diff changeset
762
143
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 142
diff changeset
763 if (rc == NGX_ERROR || r->header_only) {
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 142
diff changeset
764 return rc;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
765 }
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
766
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
767 b = ngx_create_temp_buf(r->pool, size);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
768 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
769 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
770 }
1592
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
771
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
772 p = ngx_cpymem(b->pos, ngx_http_msie_refresh_head,
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
773 sizeof(ngx_http_msie_refresh_head) - 1);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
774
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
775 if (escape == 0) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
776 p = ngx_cpymem(p, location, len);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
777
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
778 } else {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
779 p = (u_char *) ngx_escape_uri(p, location, len, NGX_ESCAPE_REFRESH);
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
780 }
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
781
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
782 b->last = ngx_cpymem(p, ngx_http_msie_refresh_tail,
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
783 sizeof(ngx_http_msie_refresh_tail) - 1);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
784
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
785 b->last_buf = 1;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
786 b->last_in_chain = 1;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
787
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
788 out.buf = b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
789 out.next = NULL;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
790
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
791 return ngx_http_output_filter(r, &out);
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
792 }