annotate src/http/ngx_http_special_response.c @ 4487:a786c85e8268

Disable symlinks: don't allow creating or truncating a file via a symlink in the last path component if "if_not_owner" parameter is used. To prevent race condition we have to open a file before checking its owner and there's no way to change access flags for already opened file descriptor, so we disable symlinks for the last path component at all if flags allow creating or truncating the file.
author Valentin Bartenev <vbart@nginx.com>
date Tue, 21 Feb 2012 15:04:41 +0000
parents d620f497c50f
children 0cc1b430a0e6
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
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
77 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
78 "<html>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
79 "<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
80 "<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
81 "<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
82 ;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
83
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
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_401_page[] =
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
86 "<html>" CRLF
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
87 "<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
88 "<body bgcolor=\"white\">" CRLF
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
89 "<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
90 ;
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
91
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
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_402_page[] =
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
94 "<html>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
95 "<head><title>402 Payment Required</title></head>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
96 "<body bgcolor=\"white\">" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
97 "<center><h1>402 Payment Required</h1></center>" CRLF
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_403_page[] =
45
f1ee46c036a4 nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
102 "<html>" CRLF
f1ee46c036a4 nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
103 "<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
104 "<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
105 "<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
106 ;
f1ee46c036a4 nginx-0.0.1-2003-01-10-09:09:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
107
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
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_404_page[] =
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
110 "<html>" CRLF
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
111 "<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
112 "<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
113 "<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
114 ;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
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_405_page[] =
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
118 "<html>" CRLF
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
119 "<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
120 "<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
121 "<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
122 ;
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
123
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
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_406_page[] =
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
126 "<html>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
127 "<head><title>406 Not Acceptable</title></head>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
128 "<body bgcolor=\"white\">" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
129 "<center><h1>406 Not Acceptable</h1></center>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
130 ;
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
131
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
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_408_page[] =
69
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
134 "<html>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
135 "<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
136 "<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
137 "<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
138 ;
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
139
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
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_409_page[] =
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
142 "<html>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
143 "<head><title>409 Conflict</title></head>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
144 "<body bgcolor=\"white\">" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
145 "<center><h1>409 Conflict</h1></center>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
146 ;
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
147
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
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_410_page[] =
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
150 "<html>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
151 "<head><title>410 Gone</title></head>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
152 "<body bgcolor=\"white\">" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
153 "<center><h1>410 Gone</h1></center>" CRLF
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
154 ;
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
155
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
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_411_page[] =
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
158 "<html>" CRLF
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
159 "<head><title>411 Length Required</title></head>" CRLF
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
160 "<body bgcolor=\"white\">" CRLF
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
161 "<center><h1>411 Length Required</h1></center>" CRLF
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
162 ;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
163
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
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_412_page[] =
1057
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
166 "<html>" CRLF
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
167 "<head><title>412 Precondition Failed</title></head>" CRLF
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
168 "<body bgcolor=\"white\">" CRLF
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
169 "<center><h1>412 Precondition Failed</h1></center>" CRLF
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
170 ;
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
diff changeset
171
bbde03037ef6 NGX_HTTP_PRECONDITION_FAILED
Igor Sysoev <igor@sysoev.ru>
parents: 730
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_413_page[] =
162
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
174 "<html>" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
175 "<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
176 "<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
177 "<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
178 ;
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
179
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
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_414_page[] =
67
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
182 "<html>" CRLF
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
183 "<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
184 "<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
185 "<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
186 ;
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
187
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
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_415_page[] =
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
190 "<html>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
191 "<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
192 "<body bgcolor=\"white\">" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
193 "<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
194 ;
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
195
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
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_416_page[] =
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
198 "<html>" CRLF
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
199 "<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
200 "<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
201 "<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
202 ;
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
203
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
204
3848
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
205 static char ngx_http_error_494_page[] =
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
206 "<html>" CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
207 "<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
208 CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
209 "<body bgcolor=\"white\">" CRLF
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
210 "<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
211 "<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
212 ;
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
213
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
214
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
215 static char ngx_http_error_495_page[] =
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
216 "<html>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
217 "<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
218 CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
219 "<body bgcolor=\"white\">" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
220 "<center><h1>400 Bad Request</h1></center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
221 "<center>The SSL certificate error</center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
222 ;
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
223
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
224
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
225 static char ngx_http_error_496_page[] =
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
226 "<html>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
227 "<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
228 CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
229 "<body bgcolor=\"white\">" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
230 "<center><h1>400 Bad Request</h1></center>" CRLF
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
231 "<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
232 ;
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
233
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
234
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
235 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
236 "<html>" CRLF
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 384
diff changeset
237 "<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
238 CRLF
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
239 "<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
240 "<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
241 "<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
242 ;
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
243
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
244
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
245 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
246 "<html>" CRLF
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
247 "<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
248 "<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
249 "<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
250 ;
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 45
diff changeset
251
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
252
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
253 static char ngx_http_error_501_page[] =
233
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
254 "<html>" CRLF
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
255 "<head><title>501 Method Not Implemented</title></head>" CRLF
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
256 "<body bgcolor=\"white\">" CRLF
535
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
257 "<center><h1>501 Method Not Implemented</h1></center>" CRLF
233
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
258 ;
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
259
4eaafcd57be7 nginx-0.0.1-2004-01-19-21:09:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
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_502_page[] =
69
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
262 "<html>" CRLF
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
263 "<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
264 "<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
265 "<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
266 ;
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
diff changeset
267
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 68
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_503_page[] =
162
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
270 "<html>" CRLF
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
271 "<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
272 "<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
273 "<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
274 ;
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
diff changeset
275
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 161
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_504_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>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
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>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
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_507_page[] =
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
286 "<html>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
287 "<head><title>507 Insufficient Storage</title></head>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
288 "<body bgcolor=\"white\">" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
289 "<center><h1>507 Insufficient Storage</h1></center>" CRLF
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
290 ;
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
291
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
292
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
293 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
294
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
295 ngx_null_string, /* 201, 204 */
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
296
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
297 #define NGX_HTTP_LAST_LEVEL_200 202
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
298 #define NGX_HTTP_LEVEL_200 (NGX_HTTP_LAST_LEVEL_200 - 201)
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
299
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
300 /* ngx_null_string, */ /* 300 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
301 ngx_string(ngx_http_error_301_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
302 ngx_string(ngx_http_error_302_page),
3631
eb5e237bfa58 303 See Other
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
303 ngx_string(ngx_http_error_303_page),
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
304
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
305 #define NGX_HTTP_LAST_LEVEL_300 304
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
306 #define NGX_HTTP_LEVEL_300 (NGX_HTTP_LAST_LEVEL_300 - 301)
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
307
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
308 ngx_string(ngx_http_error_400_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
309 ngx_string(ngx_http_error_401_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
310 ngx_string(ngx_http_error_402_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
311 ngx_string(ngx_http_error_403_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
312 ngx_string(ngx_http_error_404_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
313 ngx_string(ngx_http_error_405_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
314 ngx_string(ngx_http_error_406_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
315 ngx_null_string, /* 407 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
316 ngx_string(ngx_http_error_408_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
317 ngx_string(ngx_http_error_409_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
318 ngx_string(ngx_http_error_410_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
319 ngx_string(ngx_http_error_411_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
320 ngx_string(ngx_http_error_412_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
321 ngx_string(ngx_http_error_413_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
322 ngx_string(ngx_http_error_414_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
323 ngx_string(ngx_http_error_415_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
324 ngx_string(ngx_http_error_416_page),
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
325
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
326 #define NGX_HTTP_LAST_LEVEL_400 417
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
327 #define NGX_HTTP_LEVEL_400 (NGX_HTTP_LAST_LEVEL_400 - 400)
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
328
3848
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
329 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
330 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
331 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
332 ngx_string(ngx_http_error_497_page), /* 497, http to https */
1672
bc93d5ab3e27 fix comment
Igor Sysoev <igor@sysoev.ru>
parents: 1604
diff changeset
333 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
334 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
335
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
336 ngx_string(ngx_http_error_500_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
337 ngx_string(ngx_http_error_501_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
338 ngx_string(ngx_http_error_502_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
339 ngx_string(ngx_http_error_503_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
340 ngx_string(ngx_http_error_504_page),
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
341 ngx_null_string, /* 505 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
342 ngx_null_string, /* 506 */
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
343 ngx_string(ngx_http_error_507_page)
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
344
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
345 #define NGX_HTTP_LAST_LEVEL_500 508
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
346
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
347 };
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
348
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
349
717
08652aae6fab fix msvc build failure introduced by previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 716
diff changeset
350 static ngx_str_t ngx_http_get_name = { 3, (u_char *) "GET " };
716
d8d7c39e3a76 allowing handling 400 errors via proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents: 681
diff changeset
351
d8d7c39e3a76 allowing handling 400 errors via proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents: 681
diff changeset
352
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
353 ngx_int_t
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
354 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
355 {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
356 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
357 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
358 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
359
2040
eba265857dc2 fix building by bcc/etc introduced in r2038
Igor Sysoev <igor@sysoev.ru>
parents: 2037
diff changeset
360 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
2037
aee889ff25ea fix debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
361 "http special response: %d, \"%V?%V\"",
aee889ff25ea fix debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
362 error, &r->uri, &r->args);
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
363
677
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
364 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
365
2019
e720be7bc195 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1982
diff changeset
366 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
367 switch (error) {
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
368 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
369 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
370 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
371 case NGX_HTTP_TO_HTTPS:
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
372 case NGX_HTTPS_CERT_ERROR:
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
373 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
374 case NGX_HTTP_INTERNAL_SERVER_ERROR:
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
375 r->keepalive = 0;
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
376 }
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
377 }
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
378
4201
1d52dd2b5bb7 Stylistic change in checking the boolean expression.
Ruslan Ermilov <ru@nginx.com>
parents: 4146
diff changeset
379 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
380 switch (error) {
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
381 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
382 case NGX_HTTP_TO_HTTPS:
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
383 case NGX_HTTPS_CERT_ERROR:
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
384 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
385 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
386 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
387 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
388
675
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 673
diff changeset
389 r->headers_out.content_type.len = 0;
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 673
diff changeset
390
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
391 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
392
2174
20a7fc523aec disable error_page loop in 500 error when recursive errors are enabled
Igor Sysoev <igor@sysoev.ru>
parents: 2040
diff changeset
393 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
394
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
395 if (clcf->recursive_error_pages == 0) {
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
396 r->error_page = 1;
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
397 }
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
398
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
399 err_page = clcf->error_pages->elts;
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
400
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
401 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
402 if (err_page[i].status == error) {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
403 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
404 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
405 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
406 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
407
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
408 r->expect_tested = 1;
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
409
2191
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
410 if (ngx_http_discard_request_body(r) != NGX_OK) {
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
411 error = NGX_HTTP_INTERNAL_SERVER_ERROR;
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
412 }
808547aa8c12 do not discard body while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2174
diff changeset
413
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
414 if (clcf->msie_refresh
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
415 && r->headers_in.msie
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
416 && (error == NGX_HTTP_MOVED_PERMANENTLY
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
417 || error == NGX_HTTP_MOVED_TEMPORARILY))
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
418 {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
419 return ngx_http_send_refresh(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
420 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
421
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
422 if (error == NGX_HTTP_CREATED) {
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
423 /* 201 */
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
424 err = 0;
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
425
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 613
diff changeset
426 } else if (error == NGX_HTTP_NO_CONTENT) {
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
427 /* 204 */
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
428 err = 0;
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
429
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
430 } else if (error >= NGX_HTTP_MOVED_PERMANENTLY
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
431 && error < NGX_HTTP_LAST_LEVEL_300)
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
432 {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
433 /* 3XX */
513
fbbf16224844 nginx-0.1.31-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 511
diff changeset
434 err = error - NGX_HTTP_MOVED_PERMANENTLY + NGX_HTTP_LEVEL_200;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
435
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
436 } else if (error >= NGX_HTTP_BAD_REQUEST
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
437 && error < NGX_HTTP_LAST_LEVEL_400)
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
438 {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
439 /* 4XX */
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
440 err = error - NGX_HTTP_BAD_REQUEST + NGX_HTTP_LEVEL_200
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
441 + NGX_HTTP_LEVEL_300;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
442
3845
11c68a5ed419 rename NGX_HTTP_OWN_CODES to NGX_HTTP_NGINX_CODES
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
443 } else if (error >= NGX_HTTP_NGINX_CODES
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
444 && error < NGX_HTTP_LAST_LEVEL_500)
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
445 {
335
d4241d7787fe nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
446 /* 49X, 5XX */
3845
11c68a5ed419 rename NGX_HTTP_OWN_CODES to NGX_HTTP_NGINX_CODES
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
447 err = error - NGX_HTTP_NGINX_CODES + NGX_HTTP_LEVEL_200
11c68a5ed419 rename NGX_HTTP_OWN_CODES to NGX_HTTP_NGINX_CODES
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
448 + NGX_HTTP_LEVEL_300
11c68a5ed419 rename NGX_HTTP_OWN_CODES to NGX_HTTP_NGINX_CODES
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
449 + NGX_HTTP_LEVEL_400;
335
d4241d7787fe nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
450 switch (error) {
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
451 case NGX_HTTP_TO_HTTPS:
647
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
452 case NGX_HTTPS_CERT_ERROR:
95d7da23ea53 nginx-0.3.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
453 case NGX_HTTPS_NO_CERT:
3848
de59ad6bf557 introduce 494 code "Request Header Too Large"
Igor Sysoev <igor@sysoev.ru>
parents: 3845
diff changeset
454 case NGX_HTTP_REQUEST_HEADER_TOO_LARGE:
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
455 r->err_status = NGX_HTTP_BAD_REQUEST;
384
e7054aaedf68 nginx-0.0.7-2004-07-09-11:12:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
456 break;
335
d4241d7787fe nginx-0.0.3-2004-05-14-20:51:47 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
457 }
2696
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
458
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
459 } else {
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
460 /* unknown code, zero body */
ae4744c28620 allow any status
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
461 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
462 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 165
diff changeset
463
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
464 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
465 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
466
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
467
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
468 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
469 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
470 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
471 {
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
472 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
473 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
474
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
475 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
476
2822
5364c3419a62 fix the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 2821
diff changeset
477 ctx = NULL;
5364c3419a62 fix the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 2821
diff changeset
478
2821
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
479 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
480 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
481 }
26e06e009ced allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents: 2819
diff changeset
482
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
483 /* clear the modules contexts */
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
484 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
485
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
486 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
487 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
488 }
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
2819
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
490 r->filter_finalize = 1;
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
491
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
492 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
493
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
494 /* 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
495
2819
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
496 switch (rc) {
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
497
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
498 case NGX_OK:
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
499 case NGX_DONE:
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
500 return NGX_ERROR;
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
501
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
502 default:
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
503 return rc;
43fe53832da7 handle big responses for "size" and "test" image_filters
Igor Sysoev <igor@sysoev.ru>
parents: 2787
diff changeset
504 }
2787
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
505 }
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
506
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
507
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
508 void
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
509 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
510 {
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
511 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
512 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
513 - 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
514
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
515 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
516 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
517 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
518
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
519 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
520 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
521 }
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
522
3daf68f2efe3 ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents: 2696
diff changeset
523
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
524 static ngx_int_t
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
525 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
526 {
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
527 ngx_int_t overwrite;
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
528 ngx_str_t uri, args;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
529 ngx_table_elt_t *location;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
530 ngx_http_core_loc_conf_t *clcf;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
531
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
532 overwrite = err_page->overwrite;
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
533
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
534 if (overwrite && overwrite != NGX_HTTP_OK) {
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
535 r->expect_tested = 1;
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
536 }
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2192
diff changeset
537
3781
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
538 if (overwrite >= 0) {
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
539 r->err_status = overwrite;
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
540 }
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
541
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
542 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
543 return NGX_ERROR;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
544 }
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
545
2685
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
546 if (uri.data[0] == '/') {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
547
2685
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
548 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
549 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
550
2685
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
551 } else {
6c8a5165ed2a fix r2590: error_page made an external redirect without query string
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
552 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
553 }
1922
d23396f2a902 do not change method while error redirection to named location
Igor Sysoev <igor@sysoev.ru>
parents: 1672
diff changeset
554
2192
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
555 if (r->method != NGX_HTTP_HEAD) {
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
556 r->method = NGX_HTTP_GET;
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
557 r->method_name = ngx_http_get_name;
798ecc4fe75c leave HEAD method while error_page redirection
Igor Sysoev <igor@sysoev.ru>
parents: 2191
diff changeset
558 }
1922
d23396f2a902 do not change method while error redirection to named location
Igor Sysoev <igor@sysoev.ru>
parents: 1672
diff changeset
559
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
560 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
561 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
562
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
563 if (uri.data[0] == '@') {
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
564 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
565 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
566
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
567 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
568
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
569 if (location == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
570 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
571 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
572
3860
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
573 if (overwrite >= NGX_HTTP_MOVED_PERMANENTLY
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
574 && overwrite <= NGX_HTTP_SEE_OTHER)
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
575 {
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
576 r->err_status = overwrite;
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
577
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
578 } else {
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
579 r->err_status = NGX_HTTP_MOVED_TEMPORARILY;
39ad979cd31e fix "error_page 497 https://" case
Igor Sysoev <igor@sysoev.ru>
parents: 3848
diff changeset
580 }
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
581
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
582 location->hash = 1;
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3316
diff changeset
583 ngx_str_set(&location->key, "Location");
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
584 location->value = uri;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
585
4206
1a94a56a4e5d Clear old Location header (if any) while adding a new one.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4201
diff changeset
586 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
587
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
588 r->headers_out.location = location;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
589
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
590 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
591
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
592 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
593 return ngx_http_send_refresh(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
594 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
595
3781
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3663
diff changeset
596 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
597 - NGX_HTTP_MOVED_PERMANENTLY
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
598 + NGX_HTTP_LEVEL_200);
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
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
601
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
602 static ngx_int_t
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
603 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
604 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
605 {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
606 u_char *tail;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
607 size_t len;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
608 ngx_int_t rc;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
609 ngx_buf_t *b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
610 ngx_uint_t msie_padding;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
611 ngx_chain_t out[3];
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 if (clcf->server_tokens) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
614 len = sizeof(ngx_http_error_full_tail) - 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
615 tail = ngx_http_error_full_tail;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
616
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
617 } else {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
618 len = sizeof(ngx_http_error_tail) - 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
619 tail = ngx_http_error_tail;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
620 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
621
356
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
622 msie_padding = 0;
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
623
3663
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
624 if (ngx_http_error_pages[err].len) {
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
625 r->headers_out.content_length_n = ngx_http_error_pages[err].len + len;
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
626 if (clcf->msie_padding
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
627 && (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
628 && r->http_version >= NGX_HTTP_VERSION_10
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
629 && err >= NGX_HTTP_LEVEL_300)
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
630 {
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
631 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
632 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
633 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
634 }
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
635
3663
4a643a230686 remove r->zero_body unused since the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3631
diff changeset
636 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
637 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
638 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
639
68
d549fdc17d7e nginx-0.0.1-2003-03-12-20:32:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
640 } else {
4146
55acacac22df Fix for incorrect 201 replies from dav module.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3860
diff changeset
641 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
642 }
894a01c6aea3 nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 164
diff changeset
643
894a01c6aea3 nginx-0.0.1-2003-10-29-20:39:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 164
diff changeset
644 if (r->headers_out.content_length) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
645 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
646 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
647 }
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
648
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
649 ngx_http_clear_accept_ranges(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
650 ngx_http_clear_last_modified(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
651
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
652 rc = ngx_http_send_header(r);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
653
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
654 if (rc == NGX_ERROR || r->header_only) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
655 return rc;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
656 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
657
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
658 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
659 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
660 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
661
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
662 b = ngx_calloc_buf(r->pool);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
663 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
664 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
665 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
666
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
667 b->memory = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
668 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
669 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
670
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
671 out[0].buf = b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
672 out[0].next = &out[1];
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
673
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
674 b = ngx_calloc_buf(r->pool);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
675 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
676 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
677 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
678
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
679 b->memory = 1;
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->pos = tail;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
682 b->last = tail + len;
1298
458e041fc902 msie_refresh should escape at least '"' to prevent XSS
Igor Sysoev <igor@sysoev.ru>
parents: 1057
diff changeset
683
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
684 out[1].buf = b;
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2019
diff changeset
685 out[1].next = NULL;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
686
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
687 if (msie_padding) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
688 b = ngx_calloc_buf(r->pool);
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
689 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
690 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
691 }
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->memory = 1;
3316
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
694 b->pos = ngx_http_msie_padding;
a63dd08379c4 add MSIE padding for Chrome too
Igor Sysoev <igor@sysoev.ru>
parents: 2882
diff changeset
695 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
696
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
697 out[1].next = &out[2];
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
698 out[2].buf = b;
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2019
diff changeset
699 out[2].next = NULL;
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
700 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
701
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
702 if (r == r->main) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
703 b->last_buf = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
704 }
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 b->last_in_chain = 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
707
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
708 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
709 }
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
710
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
711
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
712 static ngx_int_t
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
713 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
714 {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
715 u_char *p, *location;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
716 size_t len, size;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
717 uintptr_t escape;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
718 ngx_int_t rc;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
719 ngx_buf_t *b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
720 ngx_chain_t out;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
721
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
722 len = r->headers_out.location->value.len;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
723 location = r->headers_out.location->value.data;
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 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
726
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
727 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
728 + escape + len
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
729 + sizeof(ngx_http_msie_refresh_tail) - 1;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
730
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
731 r->err_status = NGX_HTTP_OK;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
732
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
733 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
734 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
735 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
736
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
737 r->headers_out.location->hash = 0;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
738 r->headers_out.location = NULL;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
739
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
740 r->headers_out.content_length_n = size;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
741
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
742 if (r->headers_out.content_length) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
743 r->headers_out.content_length->hash = 0;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
744 r->headers_out.content_length = NULL;
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
745 }
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
746
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
747 ngx_http_clear_accept_ranges(r);
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
748 ngx_http_clear_last_modified(r);
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
749
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
750 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
751
143
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 142
diff changeset
752 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
753 return rc;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
754 }
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
755
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
756 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
757 if (b == NULL) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
758 return NGX_ERROR;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
759 }
1592
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1370
diff changeset
760
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
761 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
762 sizeof(ngx_http_msie_refresh_head) - 1);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
763
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
764 if (escape == 0) {
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
765 p = ngx_cpymem(p, location, len);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
766
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
767 } else {
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
768 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
769 }
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
770
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
771 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
772 sizeof(ngx_http_msie_refresh_tail) - 1);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
773
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
774 b->last_buf = 1;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
775 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
776
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
777 out.buf = b;
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
778 out.next = NULL;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
779
1604
e27930ae2b8f divide special response handling into several functions
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
780 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
781 }