Mercurial > hg > nginx
annotate src/http/ngx_http_special_response.c @ 9230:e14debe728b0 radix_with_skip
Closed the radix_with_skip branch.
The radix_with_skip branch is an archive of an experiment did in 2008,
and it is no longer relevant. It is now closed to avoid cluttering of
the branches list. If needed, closed branches still can be seen with
"hg branches --closed".
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sat, 23 Mar 2024 04:30:45 +0300 |
parents | 798ecc4fe75c |
children | 26d9d4a41e91 |
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 |
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
|
4 */ |
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 |
98
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
6 |
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
7 #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
|
8 #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
|
9 #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
|
10 #include <nginx.h> |
24
77c7629a2627
nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 |
77c7629a2627
nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
12 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
13 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
|
14 ngx_http_err_page_t *err_page); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
15 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
|
16 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
|
17 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
|
18 |
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 static u_char ngx_http_error_full_tail[] = |
1592 | 21 "<hr><center>" NGINX_VER "</center>" CRLF |
22 "</body>" CRLF | |
23 "</html>" CRLF | |
24 ; | |
25 | |
26 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
27 static u_char ngx_http_error_tail[] = |
1592 | 28 "<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
|
29 "</body>" CRLF |
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
30 "</html>" CRLF |
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
31 ; |
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
32 |
59
e8cdc2989cee
nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
47
diff
changeset
|
33 |
501 | 34 static u_char ngx_http_msie_stub[] = |
103
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
35 "<!-- The padding to disable MSIE's friendly error page -->" CRLF |
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
36 "<!-- The padding to disable MSIE's friendly error page -->" CRLF |
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
37 "<!-- The padding to disable MSIE's friendly error page -->" CRLF |
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
38 "<!-- The padding to disable MSIE's friendly error page -->" CRLF |
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
39 "<!-- The padding to disable MSIE's friendly error page -->" CRLF |
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
40 "<!-- The padding to disable MSIE's friendly error page -->" CRLF |
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
41 ; |
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 |
679 | 44 static u_char ngx_http_msie_refresh_head[] = |
45 "<html><head><meta http-equiv=\"Refresh\" content=\"0; URL="; | |
46 | |
47 | |
48 static u_char ngx_http_msie_refresh_tail[] = | |
49 "\"></head><body></body></html>" CRLF; | |
50 | |
51 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
52 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
|
53 "<html>" CRLF |
ef8c87afcfc5
nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
143
diff
changeset
|
54 "<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
|
55 "<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
|
56 "<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
|
57 ; |
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 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
60 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
|
61 "<html>" CRLF |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
98
diff
changeset
|
62 "<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
|
63 "<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
|
64 "<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
|
65 ; |
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 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
68 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
|
69 "<html>" CRLF |
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
70 "<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
|
71 "<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
|
72 "<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
|
73 ; |
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
74 |
59
e8cdc2989cee
nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
47
diff
changeset
|
75 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
76 static char ngx_http_error_401_page[] = |
499 | 77 "<html>" CRLF |
503 | 78 "<head><title>401 Authorization Required</title></head>" CRLF |
499 | 79 "<body bgcolor=\"white\">" CRLF |
503 | 80 "<center><h1>401 Authorization Required</h1></center>" CRLF |
499 | 81 ; |
82 | |
83 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
84 static char ngx_http_error_402_page[] = |
499 | 85 "<html>" CRLF |
86 "<head><title>402 Payment Required</title></head>" CRLF | |
87 "<body bgcolor=\"white\">" CRLF | |
88 "<center><h1>402 Payment Required</h1></center>" CRLF | |
89 ; | |
90 | |
91 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
92 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
|
93 "<html>" CRLF |
f1ee46c036a4
nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents:
26
diff
changeset
|
94 "<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
|
95 "<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
|
96 "<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
|
97 ; |
f1ee46c036a4
nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents:
26
diff
changeset
|
98 |
59
e8cdc2989cee
nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
47
diff
changeset
|
99 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
100 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
|
101 "<html>" CRLF |
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
102 "<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
|
103 "<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
|
104 "<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
|
105 ; |
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
106 |
59
e8cdc2989cee
nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
47
diff
changeset
|
107 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
108 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
|
109 "<html>" CRLF |
a23d010f356d
nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
88
diff
changeset
|
110 "<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
|
111 "<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
|
112 "<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
|
113 ; |
a23d010f356d
nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
88
diff
changeset
|
114 |
a23d010f356d
nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
88
diff
changeset
|
115 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
116 static char ngx_http_error_406_page[] = |
499 | 117 "<html>" CRLF |
118 "<head><title>406 Not Acceptable</title></head>" CRLF | |
119 "<body bgcolor=\"white\">" CRLF | |
120 "<center><h1>406 Not Acceptable</h1></center>" CRLF | |
121 ; | |
122 | |
123 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
124 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
|
125 "<html>" CRLF |
e43f406e4525
nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
68
diff
changeset
|
126 "<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
|
127 "<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
|
128 "<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
|
129 ; |
e43f406e4525
nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
68
diff
changeset
|
130 |
e43f406e4525
nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
68
diff
changeset
|
131 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
132 static char ngx_http_error_409_page[] = |
637 | 133 "<html>" CRLF |
134 "<head><title>409 Conflict</title></head>" CRLF | |
135 "<body bgcolor=\"white\">" CRLF | |
136 "<center><h1>409 Conflict</h1></center>" CRLF | |
137 ; | |
138 | |
139 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
140 static char ngx_http_error_410_page[] = |
499 | 141 "<html>" CRLF |
142 "<head><title>410 Gone</title></head>" CRLF | |
143 "<body bgcolor=\"white\">" CRLF | |
144 "<center><h1>410 Gone</h1></center>" CRLF | |
145 ; | |
146 | |
147 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
148 static char ngx_http_error_411_page[] = |
581 | 149 "<html>" CRLF |
150 "<head><title>411 Length Required</title></head>" CRLF | |
151 "<body bgcolor=\"white\">" CRLF | |
152 "<center><h1>411 Length Required</h1></center>" CRLF | |
153 ; | |
154 | |
155 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
156 static char ngx_http_error_412_page[] = |
1057 | 157 "<html>" CRLF |
158 "<head><title>412 Precondition Failed</title></head>" CRLF | |
159 "<body bgcolor=\"white\">" CRLF | |
160 "<center><h1>412 Precondition Failed</h1></center>" CRLF | |
161 ; | |
162 | |
163 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
164 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
|
165 "<html>" CRLF |
96993d4d5067
nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
161
diff
changeset
|
166 "<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
|
167 "<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
|
168 "<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
|
169 ; |
96993d4d5067
nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
161
diff
changeset
|
170 |
96993d4d5067
nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
161
diff
changeset
|
171 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
172 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
|
173 "<html>" CRLF |
5a7d1aaa1618
nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
174 "<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
|
175 "<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
|
176 "<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
|
177 ; |
5a7d1aaa1618
nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
178 |
5a7d1aaa1618
nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
179 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
180 static char ngx_http_error_415_page[] = |
637 | 181 "<html>" CRLF |
182 "<head><title>415 Unsupported Media Type</title></head>" CRLF | |
183 "<body bgcolor=\"white\">" CRLF | |
184 "<center><h1>415 Unsupported Media Type</h1></center>" CRLF | |
185 ; | |
186 | |
187 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
188 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
|
189 "<html>" CRLF |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
98
diff
changeset
|
190 "<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
|
191 "<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
|
192 "<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
|
193 ; |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
98
diff
changeset
|
194 |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
98
diff
changeset
|
195 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
196 static char ngx_http_error_495_page[] = |
647 | 197 "<html>" CRLF |
198 "<head><title>400 The SSL certificate error</title></head>" | |
199 CRLF | |
200 "<body bgcolor=\"white\">" CRLF | |
201 "<center><h1>400 Bad Request</h1></center>" CRLF | |
202 "<center>The SSL certificate error</center>" CRLF | |
203 ; | |
204 | |
205 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
206 static char ngx_http_error_496_page[] = |
647 | 207 "<html>" CRLF |
208 "<head><title>400 No required SSL certificate was sent</title></head>" | |
209 CRLF | |
210 "<body bgcolor=\"white\">" CRLF | |
211 "<center><h1>400 Bad Request</h1></center>" CRLF | |
212 "<center>No required SSL certificate was sent</center>" CRLF | |
213 ; | |
214 | |
215 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
216 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
|
217 "<html>" CRLF |
396
6f3b20c1ac50
nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents:
384
diff
changeset
|
218 "<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
|
219 CRLF |
384
e7054aaedf68
nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents:
356
diff
changeset
|
220 "<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
|
221 "<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
|
222 "<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
|
223 ; |
e7054aaedf68
nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents:
356
diff
changeset
|
224 |
e7054aaedf68
nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents:
356
diff
changeset
|
225 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
226 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
|
227 "<html>" CRLF |
d81326c3b21b
nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
45
diff
changeset
|
228 "<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
|
229 "<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
|
230 "<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
|
231 ; |
d81326c3b21b
nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
45
diff
changeset
|
232 |
26
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
233 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
234 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
|
235 "<html>" CRLF |
4eaafcd57be7
nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents:
179
diff
changeset
|
236 "<head><title>501 Method Not Implemented</title></head>" CRLF |
4eaafcd57be7
nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents:
179
diff
changeset
|
237 "<body bgcolor=\"white\">" CRLF |
535 | 238 "<center><h1>501 Method 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
|
239 ; |
4eaafcd57be7
nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents:
179
diff
changeset
|
240 |
4eaafcd57be7
nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents:
179
diff
changeset
|
241 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
242 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
|
243 "<html>" CRLF |
e43f406e4525
nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
68
diff
changeset
|
244 "<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
|
245 "<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
|
246 "<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
|
247 ; |
e43f406e4525
nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
68
diff
changeset
|
248 |
e43f406e4525
nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
68
diff
changeset
|
249 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
250 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
|
251 "<html>" CRLF |
96993d4d5067
nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
161
diff
changeset
|
252 "<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
|
253 "<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
|
254 "<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
|
255 ; |
96993d4d5067
nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
161
diff
changeset
|
256 |
96993d4d5067
nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
161
diff
changeset
|
257 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
258 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
|
259 "<html>" CRLF |
e43f406e4525
nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
68
diff
changeset
|
260 "<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
|
261 "<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
|
262 "<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
|
263 ; |
e43f406e4525
nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
68
diff
changeset
|
264 |
e43f406e4525
nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
68
diff
changeset
|
265 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
266 static char ngx_http_error_507_page[] = |
637 | 267 "<html>" CRLF |
268 "<head><title>507 Insufficient Storage</title></head>" CRLF | |
269 "<body bgcolor=\"white\">" CRLF | |
270 "<center><h1>507 Insufficient Storage</h1></center>" CRLF | |
271 ; | |
272 | |
273 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
274 static ngx_str_t ngx_http_error_pages[] = { |
499 | 275 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
276 ngx_null_string, /* 201, 204 */ |
511 | 277 |
278 #define NGX_HTTP_LEVEL_200 1 | |
279 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
280 /* ngx_null_string, */ /* 300 */ |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
281 ngx_string(ngx_http_error_301_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
282 ngx_string(ngx_http_error_302_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
283 ngx_null_string, /* 303 */ |
26
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
284 |
499 | 285 #define NGX_HTTP_LEVEL_300 3 |
286 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
287 ngx_string(ngx_http_error_400_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
288 ngx_string(ngx_http_error_401_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
289 ngx_string(ngx_http_error_402_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
290 ngx_string(ngx_http_error_403_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
291 ngx_string(ngx_http_error_404_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
292 ngx_string(ngx_http_error_405_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
293 ngx_string(ngx_http_error_406_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
294 ngx_null_string, /* 407 */ |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
295 ngx_string(ngx_http_error_408_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
296 ngx_string(ngx_http_error_409_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
297 ngx_string(ngx_http_error_410_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
298 ngx_string(ngx_http_error_411_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
299 ngx_string(ngx_http_error_412_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
300 ngx_string(ngx_http_error_413_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
301 ngx_string(ngx_http_error_414_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
302 ngx_string(ngx_http_error_415_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
303 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
|
304 |
499 | 305 #define NGX_HTTP_LEVEL_400 17 |
306 | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
307 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
|
308 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
|
309 ngx_string(ngx_http_error_497_page), /* 497, http to https */ |
1672 | 310 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
|
311 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
|
312 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
313 ngx_string(ngx_http_error_500_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
314 ngx_string(ngx_http_error_501_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
315 ngx_string(ngx_http_error_502_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
316 ngx_string(ngx_http_error_503_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
317 ngx_string(ngx_http_error_504_page), |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
318 ngx_null_string, /* 505 */ |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
319 ngx_null_string, /* 506 */ |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
320 ngx_string(ngx_http_error_507_page) |
26
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
321 }; |
24
77c7629a2627
nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
322 |
59
e8cdc2989cee
nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
47
diff
changeset
|
323 |
717
08652aae6fab
fix msvc build failure introduced by previous commit
Igor Sysoev <igor@sysoev.ru>
parents:
716
diff
changeset
|
324 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
|
325 |
d8d7c39e3a76
allowing handling 400 errors via proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents:
681
diff
changeset
|
326 |
487 | 327 ngx_int_t |
328 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
|
329 { |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
330 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
|
331 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
|
332 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
|
333 |
2040
eba265857dc2
fix building by bcc/etc introduced in r2038
Igor Sysoev <igor@sysoev.ru>
parents:
2037
diff
changeset
|
334 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, |
2037 | 335 "http special response: %d, \"%V?%V\"", |
336 error, &r->uri, &r->args); | |
527 | 337 |
677 | 338 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
|
339 |
2019 | 340 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
|
341 switch (error) { |
d549fdc17d7e
nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
67
diff
changeset
|
342 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
|
343 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
|
344 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
|
345 case NGX_HTTP_TO_HTTPS: |
647 | 346 case NGX_HTTPS_CERT_ERROR: |
347 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
|
348 case NGX_HTTP_INTERNAL_SERVER_ERROR: |
d549fdc17d7e
nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
67
diff
changeset
|
349 r->keepalive = 0; |
d549fdc17d7e
nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
67
diff
changeset
|
350 } |
d549fdc17d7e
nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
67
diff
changeset
|
351 } |
d549fdc17d7e
nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
67
diff
changeset
|
352 |
88
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
71
diff
changeset
|
353 if (r->lingering_close == 1) { |
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
71
diff
changeset
|
354 switch (error) { |
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
71
diff
changeset
|
355 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
|
356 case NGX_HTTP_TO_HTTPS: |
647 | 357 case NGX_HTTPS_CERT_ERROR: |
358 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
|
359 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
|
360 } |
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
71
diff
changeset
|
361 } |
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
71
diff
changeset
|
362 |
675 | 363 r->headers_out.content_type.len = 0; |
364 | |
176
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
365 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
|
366 |
2174
20a7fc523aec
disable error_page loop in 500 error when recursive errors are enabled
Igor Sysoev <igor@sysoev.ru>
parents:
2040
diff
changeset
|
367 if (!r->error_page && clcf->error_pages && r->uri_changes != 0) { |
679 | 368 |
369 if (clcf->recursive_error_pages == 0) { | |
370 r->error_page = 1; | |
371 } | |
477 | 372 |
176
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
373 err_page = clcf->error_pages->elts; |
477 | 374 |
176
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
375 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
|
376 if (err_page[i].status == error) { |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
377 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
|
378 } |
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
379 } |
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
380 } |
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
381 |
2191
808547aa8c12
do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents:
2174
diff
changeset
|
382 if (ngx_http_discard_request_body(r) != NGX_OK) { |
808547aa8c12
do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents:
2174
diff
changeset
|
383 error = NGX_HTTP_INTERNAL_SERVER_ERROR; |
808547aa8c12
do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents:
2174
diff
changeset
|
384 } |
808547aa8c12
do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents:
2174
diff
changeset
|
385 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
386 if (clcf->msie_refresh |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
387 && r->headers_in.msie |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
388 && (error == NGX_HTTP_MOVED_PERMANENTLY |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
389 || error == NGX_HTTP_MOVED_TEMPORARILY)) |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
390 { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
391 return ngx_http_send_refresh(r); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
392 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
393 |
633 | 394 if (error == NGX_HTTP_CREATED) { |
395 /* 201 */ | |
396 err = 0; | |
637 | 397 r->header_only = 1; |
633 | 398 |
399 } else if (error == NGX_HTTP_NO_CONTENT) { | |
511 | 400 /* 204 */ |
401 err = 0; | |
402 | |
403 } else if (error < NGX_HTTP_BAD_REQUEST) { | |
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 /* 3XX */ |
513 | 405 err = error - NGX_HTTP_MOVED_PERMANENTLY + NGX_HTTP_LEVEL_200; |
176
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
406 |
587 | 407 } else if (error < NGX_HTTP_OWN_CODES) { |
176
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
408 /* 4XX */ |
511 | 409 err = error - NGX_HTTP_BAD_REQUEST + NGX_HTTP_LEVEL_200 |
410 + NGX_HTTP_LEVEL_300; | |
176
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
411 |
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
412 } else { |
335
d4241d7787fe
nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents:
331
diff
changeset
|
413 /* 49X, 5XX */ |
587 | 414 err = error - NGX_HTTP_OWN_CODES + NGX_HTTP_LEVEL_200 |
511 | 415 + NGX_HTTP_LEVEL_300 |
499 | 416 + NGX_HTTP_LEVEL_400; |
335
d4241d7787fe
nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents:
331
diff
changeset
|
417 switch (error) { |
384
e7054aaedf68
nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents:
356
diff
changeset
|
418 case NGX_HTTP_TO_HTTPS: |
647 | 419 case NGX_HTTPS_CERT_ERROR: |
420 case NGX_HTTPS_NO_CERT: | |
679 | 421 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
|
422 break; |
335
d4241d7787fe
nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents:
331
diff
changeset
|
423 } |
176
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
424 } |
c0552e5ab567
nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents:
165
diff
changeset
|
425 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
426 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
|
427 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
428 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
429 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
430 static ngx_int_t |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
431 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
|
432 { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
433 u_char ch, *p, *last; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
434 ngx_str_t *uri, *args, u, a; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
435 ngx_table_elt_t *location; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
436 ngx_http_core_loc_conf_t *clcf; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
437 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
438 r->err_status = err_page->overwrite; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
439 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
440 r->zero_in_uri = 0; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
441 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
442 if (err_page->uri_lengths) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
443 if (ngx_http_script_run(r, &u, err_page->uri_lengths->elts, 0, |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
444 err_page->uri_values->elts) |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
445 == NULL) |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
446 { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
447 return NGX_ERROR; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
448 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
449 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
450 p = u.data; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
451 uri = &u; |
1982
dd388c80f5a2
args support in static error_page
Igor Sysoev <igor@sysoev.ru>
parents:
1922
diff
changeset
|
452 args = NULL; |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
453 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
454 if (*p == '/') { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
455 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
456 last = p + uri->len; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
457 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
458 while (p < last) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
459 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
460 ch = *p++; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
461 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
462 if (ch == '?') { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
463 a.len = last - p; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
464 a.data = p; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
465 args = &a; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
466 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
467 u.len = p - 1 - u.data; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
468 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
469 while (p < last) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
470 if (*p++ == '\0') { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
471 r->zero_in_uri = 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
472 break; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
473 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
474 } |
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 break; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
477 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
478 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
479 if (ch == '\0') { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
480 r->zero_in_uri = 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
481 continue; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
482 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
483 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
484 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
485 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
486 } else { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
487 uri = &err_page->uri; |
1982
dd388c80f5a2
args support in static error_page
Igor Sysoev <igor@sysoev.ru>
parents:
1922
diff
changeset
|
488 args = &err_page->args; |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
489 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
490 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
491 if (uri->data[0] == '/') { |
1922
d23396f2a902
do not change method while error redirection to named location
Igor Sysoev <igor@sysoev.ru>
parents:
1672
diff
changeset
|
492 |
2192
798ecc4fe75c
leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents:
2191
diff
changeset
|
493 if (r->method != NGX_HTTP_HEAD) { |
798ecc4fe75c
leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents:
2191
diff
changeset
|
494 r->method = NGX_HTTP_GET; |
798ecc4fe75c
leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents:
2191
diff
changeset
|
495 r->method_name = ngx_http_get_name; |
798ecc4fe75c
leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents:
2191
diff
changeset
|
496 } |
1922
d23396f2a902
do not change method while error redirection to named location
Igor Sysoev <igor@sysoev.ru>
parents:
1672
diff
changeset
|
497 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
498 return ngx_http_internal_redirect(r, uri, args); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
499 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
500 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
501 if (uri->data[0] == '@') { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
502 return ngx_http_named_location(r, uri); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
503 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
504 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
505 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
|
506 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
507 if (location == NULL) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
508 return NGX_ERROR; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
509 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
510 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
511 r->err_status = NGX_HTTP_MOVED_TEMPORARILY; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
512 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
513 location->hash = 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
514 location->key.len = sizeof("Location") - 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
515 location->key.data = (u_char *) "Location"; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
516 location->value = *uri; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
517 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
518 r->headers_out.location = location; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
519 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
520 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
|
521 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
522 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
|
523 return ngx_http_send_refresh(r); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
524 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
525 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
526 return ngx_http_send_special_response(r, clcf, NGX_HTTP_MOVED_TEMPORARILY |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
527 - NGX_HTTP_MOVED_PERMANENTLY |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
528 + NGX_HTTP_LEVEL_200); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
529 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
530 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
531 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
532 static ngx_int_t |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
533 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
|
534 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
|
535 { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
536 u_char *tail; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
537 size_t len; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
538 ngx_int_t rc; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
539 ngx_buf_t *b; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
540 ngx_uint_t msie_padding; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
541 ngx_chain_t out[3]; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
542 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
543 if (clcf->server_tokens) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
544 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
|
545 tail = ngx_http_error_full_tail; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
546 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
547 } else { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
548 len = sizeof(ngx_http_error_tail) - 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
549 tail = ngx_http_error_tail; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
550 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
551 |
356
2e3cbc1bbe3c
nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents:
343
diff
changeset
|
552 msie_padding = 0; |
2e3cbc1bbe3c
nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents:
343
diff
changeset
|
553 |
730
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
554 if (!r->zero_body) { |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
555 if (ngx_http_error_pages[err].len) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
556 r->headers_out.content_length_n = ngx_http_error_pages[err].len |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
557 + len; |
730
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
558 if (clcf->msie_padding |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
559 && r->headers_in.msie |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
560 && r->http_version >= NGX_HTTP_VERSION_10 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
561 && err >= NGX_HTTP_LEVEL_300) |
730
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
562 { |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
563 r->headers_out.content_length_n += |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
564 sizeof(ngx_http_msie_stub) - 1; |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
565 msie_padding = 1; |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
566 } |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
567 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
568 r->headers_out.content_type_len = sizeof("text/html") - 1; |
730
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
569 r->headers_out.content_type.len = sizeof("text/html") - 1; |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
570 r->headers_out.content_type.data = (u_char *) "text/html"; |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
571 |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
572 } else { |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
573 r->headers_out.content_length_n = -1; |
331
f168a88e93f7
nginx-0.0.3-2004-05-04-21:56:58 import
Igor Sysoev <igor@sysoev.ru>
parents:
326
diff
changeset
|
574 } |
99
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
98
diff
changeset
|
575 |
68
d549fdc17d7e
nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
67
diff
changeset
|
576 } else { |
730
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
577 r->headers_out.content_length_n = 0; |
1be87cdd010f
set "Content-Length: 0" for errors handled by "return 204"
Igor Sysoev <igor@sysoev.ru>
parents:
717
diff
changeset
|
578 err = 0; |
165
894a01c6aea3
nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
164
diff
changeset
|
579 } |
894a01c6aea3
nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
164
diff
changeset
|
580 |
894a01c6aea3
nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
164
diff
changeset
|
581 if (r->headers_out.content_length) { |
509 | 582 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
|
583 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
|
584 } |
24
77c7629a2627
nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
585 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
586 ngx_http_clear_accept_ranges(r); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
587 ngx_http_clear_last_modified(r); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
588 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
589 rc = ngx_http_send_header(r); |
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 if (rc == NGX_ERROR || r->header_only) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
592 return rc; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
593 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
594 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
595 if (ngx_http_error_pages[err].len == 0) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
596 return NGX_OK; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
597 } |
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 b = ngx_calloc_buf(r->pool); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
600 if (b == NULL) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
601 return NGX_ERROR; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
602 } |
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 b->memory = 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
605 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
|
606 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
|
607 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
608 out[0].buf = b; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
609 out[0].next = &out[1]; |
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 b = ngx_calloc_buf(r->pool); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
612 if (b == NULL) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
613 return NGX_ERROR; |
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 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
616 b->memory = 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
617 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
618 b->pos = tail; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
619 b->last = tail + len; |
1298
458e041fc902
msie_refresh should escape at least '"' to prevent XSS
Igor Sysoev <igor@sysoev.ru>
parents:
1057
diff
changeset
|
620 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
621 out[1].buf = b; |
2024 | 622 out[1].next = NULL; |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
623 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
624 if (msie_padding) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
625 b = ngx_calloc_buf(r->pool); |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
626 if (b == NULL) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
627 return NGX_ERROR; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
628 } |
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 b->memory = 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
631 b->pos = ngx_http_msie_stub; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
632 b->last = ngx_http_msie_stub + sizeof(ngx_http_msie_stub) - 1; |
1298
458e041fc902
msie_refresh should escape at least '"' to prevent XSS
Igor Sysoev <igor@sysoev.ru>
parents:
1057
diff
changeset
|
633 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
634 out[1].next = &out[2]; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
635 out[2].buf = b; |
2024 | 636 out[2].next = NULL; |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
637 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
638 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
639 if (r == r->main) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
640 b->last_buf = 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
641 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
642 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
643 b->last_in_chain = 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
644 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
645 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
|
646 } |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
647 |
679 | 648 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
649 static ngx_int_t |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
650 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
|
651 { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
652 u_char *p, *location; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
653 size_t len, size; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
654 uintptr_t escape; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
655 ngx_int_t rc; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
656 ngx_buf_t *b; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
657 ngx_chain_t out; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
658 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
659 len = r->headers_out.location->value.len; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
660 location = r->headers_out.location->value.data; |
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 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
|
663 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
664 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
|
665 + escape + len |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
666 + sizeof(ngx_http_msie_refresh_tail) - 1; |
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 r->err_status = NGX_HTTP_OK; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
669 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
670 r->headers_out.content_type_len = sizeof("text/html") - 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
671 r->headers_out.content_type.len = sizeof("text/html") - 1; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
672 r->headers_out.content_type.data = (u_char *) "text/html"; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
673 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
674 r->headers_out.location->hash = 0; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
675 r->headers_out.location = NULL; |
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 r->headers_out.content_length_n = size; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
678 |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
679 if (r->headers_out.content_length) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
680 r->headers_out.content_length->hash = 0; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
681 r->headers_out.content_length = NULL; |
679 | 682 } |
683 | |
577 | 684 ngx_http_clear_accept_ranges(r); |
685 ngx_http_clear_last_modified(r); | |
686 | |
103
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
687 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
|
688 |
143
5526213be452
nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
142
diff
changeset
|
689 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
|
690 return rc; |
103
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
691 } |
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
692 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
693 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
|
694 if (b == NULL) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
695 return NGX_ERROR; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
696 } |
1592 | 697 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
698 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
|
699 sizeof(ngx_http_msie_refresh_head) - 1); |
679 | 700 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
701 if (escape == 0) { |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
702 p = ngx_cpymem(p, location, len); |
679 | 703 |
704 } else { | |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
705 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
|
706 } |
6dfda4cf5200
nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
707 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
708 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
|
709 sizeof(ngx_http_msie_refresh_tail) - 1); |
509 | 710 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
711 b->last_buf = 1; |
509 | 712 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
|
713 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
714 out.buf = b; |
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
715 out.next = NULL; |
501 | 716 |
1604
e27930ae2b8f
divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents:
1592
diff
changeset
|
717 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
|
718 } |