annotate src/http/ngx_http_special_response.c @ 6817:e75e854657ba

SSL: $ssl_curves (ticket #1088). The variable contains a list of curves as supported by the client. Known curves are listed by their names, unknown ones are shown in hex, e.g., "0x001d:prime256v1:secp521r1:secp384r1". Note that OpenSSL uses session data for SSL_get1_curves(), and it doesn't store full list of curves supported by the client when serializing a session. As a result $ssl_curves is only available for new sessions (and will be empty for reused ones). The variable is only meaningful when using OpenSSL 1.0.2 and above. With older versions the variable is empty.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 05 Dec 2016 22:23:23 +0300
parents 92ad1c92bcf9
children 25203fc377fb
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
6556
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
213 static char ngx_http_error_421_page[] =
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
214 "<html>" CRLF
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
215 "<head><title>421 Misdirected Request</title></head>" CRLF
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
216 "<body bgcolor=\"white\">" CRLF
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
217 "<center><h1>421 Misdirected Request</h1></center>" CRLF
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
218 ;
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
219
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
220
3848
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
221 static char ngx_http_error_494_page[] =
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
222 "<html>" CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
223 "<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
224 CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
225 "<body bgcolor=\"white\">" CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
226 "<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
227 "<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
228 ;
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
229
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
230
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
231 static char ngx_http_error_495_page[] =
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
232 "<html>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
233 "<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
234 CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
235 "<body bgcolor=\"white\">" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
236 "<center><h1>400 Bad Request</h1></center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
237 "<center>The SSL certificate error</center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
238 ;
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
239
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
240
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
241 static char ngx_http_error_496_page[] =
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
242 "<html>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
243 "<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
244 CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
245 "<body bgcolor=\"white\">" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
246 "<center><h1>400 Bad Request</h1></center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
247 "<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
248 ;
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
249
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
250
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
251 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
252 "<html>" CRLF
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 384
diff changeset
253 "<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
254 CRLF
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
255 "<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
256 "<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
257 "<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
258 ;
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
259
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
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_500_page[] =
47
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
262 "<html>" CRLF
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
263 "<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
264 "<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
265 "<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
266 ;
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
267
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
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_501_page[] =
233
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
270 "<html>" CRLF
4920
812c4765c954 Request body: fixed "501 Not Implemented" error handling.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4746
diff changeset
271 "<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
272 "<body bgcolor=\"white\">" CRLF
4920
812c4765c954 Request body: fixed "501 Not Implemented" error handling.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4746
diff changeset
273 "<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
274 ;
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
275
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
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_502_page[] =
69
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
278 "<html>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
279 "<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
280 "<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
281 "<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
282 ;
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
283
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
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_503_page[] =
162
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
286 "<html>" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
287 "<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
288 "<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
289 "<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
290 ;
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
291
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
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_504_page[] =
69
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
294 "<html>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
295 "<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
296 "<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
297 "<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
298 ;
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
299
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
300
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
301 static char ngx_http_error_507_page[] =
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
302 "<html>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
303 "<head><title>507 Insufficient Storage</title></head>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
304 "<body bgcolor=\"white\">" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
305 "<center><h1>507 Insufficient Storage</h1></center>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
306 ;
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
307
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
308
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
309 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
310
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
311 ngx_null_string, /* 201, 204 */
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
312
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
313 #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
314 #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
315
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
316 /* ngx_null_string, */ /* 300 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
317 ngx_string(ngx_http_error_301_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
318 ngx_string(ngx_http_error_302_page),
3631
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
319 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
320 ngx_null_string, /* 304 */
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
321 ngx_null_string, /* 305 */
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
322 ngx_null_string, /* 306 */
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
323 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
324
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
325 #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
326 #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
327
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
328 ngx_string(ngx_http_error_400_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
329 ngx_string(ngx_http_error_401_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
330 ngx_string(ngx_http_error_402_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
331 ngx_string(ngx_http_error_403_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
332 ngx_string(ngx_http_error_404_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
333 ngx_string(ngx_http_error_405_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
334 ngx_string(ngx_http_error_406_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
335 ngx_null_string, /* 407 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
336 ngx_string(ngx_http_error_408_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
337 ngx_string(ngx_http_error_409_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
338 ngx_string(ngx_http_error_410_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
339 ngx_string(ngx_http_error_411_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
340 ngx_string(ngx_http_error_412_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
341 ngx_string(ngx_http_error_413_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
342 ngx_string(ngx_http_error_414_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
343 ngx_string(ngx_http_error_415_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
344 ngx_string(ngx_http_error_416_page),
6556
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
345 ngx_null_string, /* 417 */
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
346 ngx_null_string, /* 418 */
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
347 ngx_null_string, /* 419 */
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
348 ngx_null_string, /* 420 */
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
349 ngx_string(ngx_http_error_421_page),
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
350
6556
654d2dae97d3 HTTP/2: the "421 Misdirected Request" response (closes #848).
Valentin Bartenev <vbart@nginx.com>
parents: 6451
diff changeset
351 #define NGX_HTTP_LAST_4XX 422
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
352 #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
353
3848
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
354 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
355 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
356 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
357 ngx_string(ngx_http_error_497_page), /* 497, http to https */
1672
bc93d5ab3e27 fix comment
Igor Sysoev <igor@sysoev.ru>
parents: 1604
diff changeset
358 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
359 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
360
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
361 ngx_string(ngx_http_error_500_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
362 ngx_string(ngx_http_error_501_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
363 ngx_string(ngx_http_error_502_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
364 ngx_string(ngx_http_error_503_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
365 ngx_string(ngx_http_error_504_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
366 ngx_null_string, /* 505 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
367 ngx_null_string, /* 506 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
368 ngx_string(ngx_http_error_507_page)
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
369
4490
0cc1b430a0e6 Renamed constants and fixed off-by-one error in "msie_padding on" handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
370 #define NGX_HTTP_LAST_5XX 508
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
371
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
372 };
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
373
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
374
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
375 ngx_int_t
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
376 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
377 {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
378 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
379 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
380 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
381
2040
eba265857dc2 fix building by bcc/etc introduced in r2038
Igor Sysoev <igor@sysoev.ru>
parents: 2037
diff changeset
382 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
5327
6b479db5b52b Format specifier fixes in error logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 4935
diff changeset
383 "http special response: %i, \"%V?%V\"",
2037
aee889ff25ea fix debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
384 error, &r->uri, &r->args);
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
385
677
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
386 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
387
2019
e720be7bc195 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1982
diff changeset
388 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
389 switch (error) {
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
390 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
391 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
392 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
393 case NGX_HTTP_TO_HTTPS:
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
394 case NGX_HTTPS_CERT_ERROR:
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
395 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
396 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
397 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
398 r->keepalive = 0;
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
399 }
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
400 }
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
401
4201
1d52dd2b5bb7 Stylistic change in checking the boolean expression.
Ruslan Ermilov <ru@nginx.com>
parents: 4146
diff changeset
402 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
403 switch (error) {
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
404 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
405 case NGX_HTTP_TO_HTTPS:
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
406 case NGX_HTTPS_CERT_ERROR:
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
407 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
408 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
409 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
410 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
411
675
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 673
diff changeset
412 r->headers_out.content_type.len = 0;
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 673
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 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
415
2174
20a7fc523aec disable error_page loop in 500 error when recursive errors are enabled
Igor Sysoev <igor@sysoev.ru>
parents: 2040
diff changeset
416 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
417
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
418 if (clcf->recursive_error_pages == 0) {
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
419 r->error_page = 1;
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
420 }
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
421
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
422 err_page = clcf->error_pages->elts;
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
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 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
425 if (err_page[i].status == error) {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
426 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
427 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
428 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
429 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
430
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
431 r->expect_tested = 1;
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
432
2191
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
433 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
434 r->keepalive = 0;
2191
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
435 }
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
436
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
437 if (clcf->msie_refresh
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
438 && r->headers_in.msie
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
439 && (error == NGX_HTTP_MOVED_PERMANENTLY
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
440 || error == NGX_HTTP_MOVED_TEMPORARILY))
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 return ngx_http_send_refresh(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
443 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
444
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
445 if (error == NGX_HTTP_CREATED) {
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
446 /* 201 */
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
447 err = 0;
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
448
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
449 } else if (error == NGX_HTTP_NO_CONTENT) {
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
450 /* 204 */
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
451 err = 0;
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
452
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
453 } 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
454 && error < NGX_HTTP_LAST_3XX)
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
455 {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
456 /* 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
457 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
458
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
459 } 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
460 && error < NGX_HTTP_LAST_4XX)
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
461 {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
462 /* 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
463 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
464
3845
11c68a5ed419 rename NGX_HTTP_OWN_CODES to NGX_HTTP_NGINX_CODES
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
465 } 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
466 && error < NGX_HTTP_LAST_5XX)
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
467 {
335
d4241d7787fe nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
468 /* 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
469 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
470 switch (error) {
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
471 case NGX_HTTP_TO_HTTPS:
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
472 case NGX_HTTPS_CERT_ERROR:
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
473 case NGX_HTTPS_NO_CERT:
3848
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
474 case NGX_HTTP_REQUEST_HEADER_TOO_LARGE:
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
475 r->err_status = NGX_HTTP_BAD_REQUEST;
335
d4241d7787fe nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
476 }
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
477
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
478 } else {
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
479 /* unknown code, zero body */
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
480 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
481 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
482
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
483 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
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
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
487 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
488 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
489 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
490 {
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
491 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
492 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
493
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
494 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
495
2822
5364c3419a62 fix the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 2821
diff changeset
496 ctx = NULL;
5364c3419a62 fix the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 2821
diff changeset
497
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
498 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
499 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
500 }
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
501
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
502 /* clear the modules contexts */
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
503 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
504
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
505 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
506 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
507 }
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
508
2819
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
509 r->filter_finalize = 1;
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
510
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
511 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
512
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
513 /* 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
514
2819
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
515 switch (rc) {
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
516
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
517 case NGX_OK:
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
518 case NGX_DONE:
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
519 return NGX_ERROR;
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
520
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
521 default:
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
522 return rc;
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
523 }
2787
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
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
526
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
527 void
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
528 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
529 {
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
530 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
531 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
532 - 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
533
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
534 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
535 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
536 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
537
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
538 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
539 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
540 }
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
541
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
542
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
543 static ngx_int_t
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
544 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
545 {
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
546 ngx_int_t overwrite;
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
547 ngx_str_t uri, args;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
548 ngx_table_elt_t *location;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
549 ngx_http_core_loc_conf_t *clcf;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
550
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
551 overwrite = err_page->overwrite;
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
552
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
553 if (overwrite && overwrite != NGX_HTTP_OK) {
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
554 r->expect_tested = 1;
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
555 }
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
556
3781
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
557 if (overwrite >= 0) {
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
558 r->err_status = overwrite;
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
559 }
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
560
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
561 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
562 return NGX_ERROR;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
563 }
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
564
6062
173561dfd567 Fixed invalid access to complex value defined as an empty string.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5327
diff changeset
565 if (uri.len && uri.data[0] == '/') {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
566
2685
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
567 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
568 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
569
2685
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
570 } else {
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
571 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
572 }
1922
d23396f2a902 do not change method while error redirection to named location
Igor Sysoev <igor@sysoev.ru>
parents: 1672
diff changeset
573
2192
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
574 if (r->method != NGX_HTTP_HEAD) {
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
575 r->method = NGX_HTTP_GET;
6310
9d00576252aa Reduced the number of GET method constants.
Ruslan Ermilov <ru@nginx.com>
parents: 6062
diff changeset
576 r->method_name = ngx_http_core_get_method;
2192
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
577 }
1922
d23396f2a902 do not change method while error redirection to named location
Igor Sysoev <igor@sysoev.ru>
parents: 1672
diff changeset
578
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
579 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
580 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
581
6062
173561dfd567 Fixed invalid access to complex value defined as an empty string.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5327
diff changeset
582 if (uri.len && uri.data[0] == '@') {
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
583 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
584 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
585
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
586 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
587
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
588 if (location == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
589 return NGX_ERROR;
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
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
592 if (overwrite != NGX_HTTP_MOVED_PERMANENTLY
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
593 && overwrite != NGX_HTTP_MOVED_TEMPORARILY
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
594 && overwrite != NGX_HTTP_SEE_OTHER
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4490
diff changeset
595 && overwrite != NGX_HTTP_TEMPORARY_REDIRECT)
3860
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
596 {
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
597 r->err_status = NGX_HTTP_MOVED_TEMPORARILY;
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
598 }
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
599
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
600 location->hash = 1;
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3316
diff changeset
601 ngx_str_set(&location->key, "Location");
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
602 location->value = uri;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
603
4206
1a94a56a4e5d Clear old Location header (if any) while adding a new one.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4201
diff changeset
604 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
605
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
606 r->headers_out.location = location;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
607
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
608 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
609
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
610 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
611 return ngx_http_send_refresh(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
612 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
613
3781
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
614 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
615 - 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
616 + NGX_HTTP_OFF_3XX);
1604
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
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
619
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
620 static ngx_int_t
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
621 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
622 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
623 {
6451
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
624 u_char *tail;
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
625 size_t len;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
626 ngx_int_t rc;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
627 ngx_buf_t *b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
628 ngx_uint_t msie_padding;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
629 ngx_chain_t out[3];
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
630
6451
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
631 if (clcf->server_tokens) {
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
632 len = sizeof(ngx_http_error_full_tail) - 1;
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
633 tail = ngx_http_error_full_tail;
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
634
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
635 } else {
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
636 len = sizeof(ngx_http_error_tail) - 1;
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
637 tail = ngx_http_error_tail;
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
638 }
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
639
356
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
640 msie_padding = 0;
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
641
3663
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
642 if (ngx_http_error_pages[err].len) {
6451
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
643 r->headers_out.content_length_n = ngx_http_error_pages[err].len + len;
3663
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
644 if (clcf->msie_padding
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
645 && (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
646 && 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
647 && 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
648 {
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
649 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
650 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
651 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
652 }
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
653
3663
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
654 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
655 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
656 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
657
68
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
658 } else {
4146
55acacac22df Fix for incorrect 201 replies from dav module.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3860
diff changeset
659 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
660 }
894a01c6aea3 nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 164
diff changeset
661
894a01c6aea3 nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 164
diff changeset
662 if (r->headers_out.content_length) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
663 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
664 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
665 }
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
666
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
667 ngx_http_clear_accept_ranges(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
668 ngx_http_clear_last_modified(r);
4746
4a18bf1833a9 Entity tags: clear on entity changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4491
diff changeset
669 ngx_http_clear_etag(r);
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 rc = ngx_http_send_header(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
672
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
673 if (rc == NGX_ERROR || r->header_only) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
674 return rc;
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 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
678 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
679 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
680
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
681 b = ngx_calloc_buf(r->pool);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
682 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
683 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
684 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
685
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
686 b->memory = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
687 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
688 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
689
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
690 out[0].buf = b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
691 out[0].next = &out[1];
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
692
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
693 b = ngx_calloc_buf(r->pool);
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 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
697
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
698 b->memory = 1;
6451
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
699
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
700 b->pos = tail;
155871d773cc Backed out server_tokens changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6449
diff changeset
701 b->last = tail + len;
1298
458e041fc902 msie_refresh should escape at least '"' to prevent XSS
Igor Sysoev <igor@sysoev.ru>
parents: 1057
diff changeset
702
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
703 out[1].buf = b;
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2019
diff changeset
704 out[1].next = NULL;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
705
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
706 if (msie_padding) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
707 b = ngx_calloc_buf(r->pool);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
708 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
709 return NGX_ERROR;
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 b->memory = 1;
3316
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
713 b->pos = ngx_http_msie_padding;
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
714 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
715
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
716 out[1].next = &out[2];
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
717 out[2].buf = b;
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2019
diff changeset
718 out[2].next = NULL;
1604
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
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
721 if (r == r->main) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
722 b->last_buf = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
723 }
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 b->last_in_chain = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
726
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
727 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
728 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
729
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
730
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
731 static ngx_int_t
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
732 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
733 {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
734 u_char *p, *location;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
735 size_t len, size;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
736 uintptr_t escape;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
737 ngx_int_t rc;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
738 ngx_buf_t *b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
739 ngx_chain_t out;
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 len = r->headers_out.location->value.len;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
742 location = r->headers_out.location->value.data;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
743
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
744 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
745
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
746 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
747 + escape + len
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
748 + sizeof(ngx_http_msie_refresh_tail) - 1;
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->err_status = NGX_HTTP_OK;
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 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
753 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
754 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
755
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
756 r->headers_out.location->hash = 0;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
757 r->headers_out.location = NULL;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
758
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
759 r->headers_out.content_length_n = size;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
760
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
761 if (r->headers_out.content_length) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
762 r->headers_out.content_length->hash = 0;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
763 r->headers_out.content_length = NULL;
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
764 }
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
765
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
766 ngx_http_clear_accept_ranges(r);
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
767 ngx_http_clear_last_modified(r);
4746
4a18bf1833a9 Entity tags: clear on entity changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4491
diff changeset
768 ngx_http_clear_etag(r);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
769
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
770 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
771
143
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 142
diff changeset
772 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
773 return rc;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
774 }
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
775
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
776 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
777 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
778 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
779 }
1592
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
780
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
781 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
782 sizeof(ngx_http_msie_refresh_head) - 1);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
783
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
784 if (escape == 0) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
785 p = ngx_cpymem(p, location, len);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
786
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
787 } else {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
788 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
789 }
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
790
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
791 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
792 sizeof(ngx_http_msie_refresh_tail) - 1);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
793
6722
6136a51f9c21 Do not set last_buf flag in subrequests.
Roman Arutyunyan <arut@nginx.com>
parents: 6556
diff changeset
794 b->last_buf = (r == r->main) ? 1 : 0;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
795 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
796
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
797 out.buf = b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
798 out.next = NULL;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
799
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
800 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
801 }