annotate src/http/ngx_http_core_module.c @ 5878:2c89956b6a76

Cache: hash of Vary headers now stored in cache. To cache responses with Vary, we now calculate hash of headers listed in Vary, and return the response from cache only if new request headers match. As of now, only one variant of the same resource can be stored in cache.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 27 Oct 2014 21:13:58 +0300
parents 51fe42cc7876
children c76d851c5e7a
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: 440
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: 440
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: 4375
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: 440
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: 440
diff changeset
6
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_config.h>
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
9 #include <ngx_core.h>
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
10 #include <ngx_http.h>
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
11
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
12
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
13 typedef struct {
1107
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
14 u_char *name;
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
15 uint32_t method;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
16 } ngx_http_method_name_t;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
17
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
18
1073
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
19 #define NGX_HTTP_REQUEST_BODY_FILE_OFF 0
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
20 #define NGX_HTTP_REQUEST_BODY_FILE_ON 1
1075
4d203f76b757 undo "client_body_in_file_only any"
Igor Sysoev <igor@sysoev.ru>
parents: 1073
diff changeset
21 #define NGX_HTTP_REQUEST_BODY_FILE_CLEAN 2
1073
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
22
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
23
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
24 static ngx_int_t ngx_http_core_find_location(ngx_http_request_t *r);
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
25 static ngx_int_t ngx_http_core_find_static_location(ngx_http_request_t *r,
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
26 ngx_http_location_tree_node_t *node);
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
27
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
28 static ngx_int_t ngx_http_core_preconfiguration(ngx_conf_t *cf);
119
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
29 static void *ngx_http_core_create_main_conf(ngx_conf_t *cf);
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
30 static char *ngx_http_core_init_main_conf(ngx_conf_t *cf, void *conf);
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
31 static void *ngx_http_core_create_srv_conf(ngx_conf_t *cf);
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
32 static char *ngx_http_core_merge_srv_conf(ngx_conf_t *cf,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
33 void *parent, void *child);
119
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
34 static void *ngx_http_core_create_loc_conf(ngx_conf_t *cf);
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
35 static char *ngx_http_core_merge_loc_conf(ngx_conf_t *cf,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
36 void *parent, void *child);
69
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
37
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
38 static char *ngx_http_core_server(ngx_conf_t *cf, ngx_command_t *cmd,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
39 void *dummy);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
40 static char *ngx_http_core_location(ngx_conf_t *cf, ngx_command_t *cmd,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
41 void *dummy);
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
42 static ngx_int_t ngx_http_core_regex_location(ngx_conf_t *cf,
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
43 ngx_http_core_loc_conf_t *clcf, ngx_str_t *regex, ngx_uint_t caseless);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
44
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
45 static char *ngx_http_core_types(ngx_conf_t *cf, ngx_command_t *cmd,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
46 void *conf);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
47 static char *ngx_http_core_type(ngx_conf_t *cf, ngx_command_t *dummy,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
48 void *conf);
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
50 static char *ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
51 void *conf);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
52 static char *ngx_http_core_server_name(ngx_conf_t *cf, ngx_command_t *cmd,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
53 void *conf);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
54 static char *ngx_http_core_root(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
55 static char *ngx_http_core_limit_except(ngx_conf_t *cf, ngx_command_t *cmd,
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
56 void *conf);
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
57 static char *ngx_http_core_directio(ngx_conf_t *cf, ngx_command_t *cmd,
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
58 void *conf);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
59 static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
60 void *conf);
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
61 static char *ngx_http_core_try_files(ngx_conf_t *cf, ngx_command_t *cmd,
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
62 void *conf);
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
63 static char *ngx_http_core_open_file_cache(ngx_conf_t *cf, ngx_command_t *cmd,
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
64 void *conf);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
65 static char *ngx_http_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
66 void *conf);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
67 static char *ngx_http_core_keepalive(ngx_conf_t *cf, ngx_command_t *cmd,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
68 void *conf);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
69 static char *ngx_http_core_internal(ngx_conf_t *cf, ngx_command_t *cmd,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
70 void *conf);
1674
f2c87cba6596 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1652
diff changeset
71 static char *ngx_http_core_resolver(ngx_conf_t *cf, ngx_command_t *cmd,
1652
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
72 void *conf);
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
73 #if (NGX_HTTP_GZIP)
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
74 static ngx_int_t ngx_http_gzip_accept_encoding(ngx_str_t *ae);
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
75 static ngx_uint_t ngx_http_gzip_quantity(u_char *p, u_char *last);
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
76 static char *ngx_http_gzip_disable(ngx_conf_t *cf, ngx_command_t *cmd,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
77 void *conf);
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
78 #endif
5084
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
79 static ngx_int_t ngx_http_get_forwarded_addr_internal(ngx_http_request_t *r,
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
80 ngx_addr_t *addr, u_char *xff, size_t xfflen, ngx_array_t *proxies,
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
81 int recursive);
4495
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
82 #if (NGX_HAVE_OPENAT)
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
83 static char *ngx_http_disable_symlinks(ngx_conf_t *cf, ngx_command_t *cmd,
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
84 void *conf);
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
85 #endif
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
86
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
87 static char *ngx_http_core_lowat_check(ngx_conf_t *cf, void *post, void *data);
1200
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
88 static char *ngx_http_core_pool_size(ngx_conf_t *cf, void *post, void *data);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
89
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
90 static ngx_conf_post_t ngx_http_core_lowat_post =
1199
98317b0a0852 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1197
diff changeset
91 { ngx_http_core_lowat_check };
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
92
1200
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
93 static ngx_conf_post_handler_pt ngx_http_core_pool_size_p =
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
94 ngx_http_core_pool_size;
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
95
2029
c036922f6f07 *) remove optimize_host_names
Igor Sysoev <igor@sysoev.ru>
parents: 2027
diff changeset
96 static ngx_conf_deprecated_t ngx_conf_deprecated_optimize_server_names = {
c036922f6f07 *) remove optimize_host_names
Igor Sysoev <igor@sysoev.ru>
parents: 2027
diff changeset
97 ngx_conf_deprecated, "optimize_server_names", "server_name_in_redirect"
609
608cf78b24ef nginx-0.3.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
98 };
608cf78b24ef nginx-0.3.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
99
1767
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
100 static ngx_conf_deprecated_t ngx_conf_deprecated_open_file_cache_retest = {
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
101 ngx_conf_deprecated, "open_file_cache_retest", "open_file_cache_valid"
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
102 };
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
103
1806
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
104 static ngx_conf_deprecated_t ngx_conf_deprecated_satisfy_any = {
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
105 ngx_conf_deprecated, "satisfy_any", "satisfy"
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
106 };
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
107
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
108
1073
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
109 static ngx_conf_enum_t ngx_http_core_request_body_in_file[] = {
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
110 { ngx_string("off"), NGX_HTTP_REQUEST_BODY_FILE_OFF },
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
111 { ngx_string("on"), NGX_HTTP_REQUEST_BODY_FILE_ON },
1075
4d203f76b757 undo "client_body_in_file_only any"
Igor Sysoev <igor@sysoev.ru>
parents: 1073
diff changeset
112 { ngx_string("clean"), NGX_HTTP_REQUEST_BODY_FILE_CLEAN },
1073
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
113 { ngx_null_string, 0 }
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
114 };
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
115
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
116
3065
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
117 #if (NGX_HAVE_FILE_AIO)
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
118
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
119 static ngx_conf_enum_t ngx_http_core_aio[] = {
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
120 { ngx_string("off"), NGX_HTTP_AIO_OFF },
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
121 { ngx_string("on"), NGX_HTTP_AIO_ON },
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
122 #if (NGX_HAVE_AIO_SENDFILE)
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
123 { ngx_string("sendfile"), NGX_HTTP_AIO_SENDFILE },
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
124 #endif
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
125 { ngx_null_string, 0 }
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
126 };
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
127
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
128 #endif
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
129
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
130
1806
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
131 static ngx_conf_enum_t ngx_http_core_satisfy[] = {
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
132 { ngx_string("all"), NGX_HTTP_SATISFY_ALL },
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
133 { ngx_string("any"), NGX_HTTP_SATISFY_ANY },
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
134 { ngx_null_string, 0 }
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
135 };
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
136
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
137
3984
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
138 static ngx_conf_enum_t ngx_http_core_lingering_close[] = {
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
139 { ngx_string("off"), NGX_HTTP_LINGERING_OFF },
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
140 { ngx_string("on"), NGX_HTTP_LINGERING_ON },
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
141 { ngx_string("always"), NGX_HTTP_LINGERING_ALWAYS },
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
142 { ngx_null_string, 0 }
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
143 };
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
144
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
145
2361
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
146 static ngx_conf_enum_t ngx_http_core_if_modified_since[] = {
2496
9081bbdccda1 if_modified_since off
Igor Sysoev <igor@sysoev.ru>
parents: 2481
diff changeset
147 { ngx_string("off"), NGX_HTTP_IMS_OFF },
9081bbdccda1 if_modified_since off
Igor Sysoev <igor@sysoev.ru>
parents: 2481
diff changeset
148 { ngx_string("exact"), NGX_HTTP_IMS_EXACT },
9081bbdccda1 if_modified_since off
Igor Sysoev <igor@sysoev.ru>
parents: 2481
diff changeset
149 { ngx_string("before"), NGX_HTTP_IMS_BEFORE },
2361
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
150 { ngx_null_string, 0 }
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
151 };
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
152
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
153
4266
4c45306936bb Fix of "keepalive_disable" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4225
diff changeset
154 static ngx_conf_bitmask_t ngx_http_core_keepalive_disable[] = {
3793
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
155 { ngx_string("none"), NGX_HTTP_KEEPALIVE_DISABLE_NONE },
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
156 { ngx_string("msie6"), NGX_HTTP_KEEPALIVE_DISABLE_MSIE6 },
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
157 { ngx_string("safari"), NGX_HTTP_KEEPALIVE_DISABLE_SAFARI },
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
158 { ngx_null_string, 0 }
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
159 };
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
160
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
161
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
162 static ngx_path_init_t ngx_http_client_temp_path = {
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
163 ngx_string(NGX_HTTP_CLIENT_TEMP_PATH), { 0, 0, 0 }
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
164 };
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
165
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
166
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
167 #if (NGX_HTTP_GZIP)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
168
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
169 static ngx_conf_enum_t ngx_http_gzip_http_version[] = {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
170 { ngx_string("1.0"), NGX_HTTP_VERSION_10 },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
171 { ngx_string("1.1"), NGX_HTTP_VERSION_11 },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
172 { ngx_null_string, 0 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
173 };
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
174
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
175
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
176 static ngx_conf_bitmask_t ngx_http_gzip_proxied_mask[] = {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
177 { ngx_string("off"), NGX_HTTP_GZIP_PROXIED_OFF },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
178 { ngx_string("expired"), NGX_HTTP_GZIP_PROXIED_EXPIRED },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
179 { ngx_string("no-cache"), NGX_HTTP_GZIP_PROXIED_NO_CACHE },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
180 { ngx_string("no-store"), NGX_HTTP_GZIP_PROXIED_NO_STORE },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
181 { ngx_string("private"), NGX_HTTP_GZIP_PROXIED_PRIVATE },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
182 { ngx_string("no_last_modified"), NGX_HTTP_GZIP_PROXIED_NO_LM },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
183 { ngx_string("no_etag"), NGX_HTTP_GZIP_PROXIED_NO_ETAG },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
184 { ngx_string("auth"), NGX_HTTP_GZIP_PROXIED_AUTH },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
185 { ngx_string("any"), NGX_HTTP_GZIP_PROXIED_ANY },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
186 { ngx_null_string, 0 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
187 };
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
188
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
189
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
190 static ngx_str_t ngx_http_gzip_no_cache = ngx_string("no-cache");
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
191 static ngx_str_t ngx_http_gzip_no_store = ngx_string("no-store");
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
192 static ngx_str_t ngx_http_gzip_private = ngx_string("private");
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
193
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
194 #endif
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
195
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
196
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
197 static ngx_command_t ngx_http_core_commands[] = {
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
198
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
199 { ngx_string("variables_hash_max_size"),
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
200 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
201 ngx_conf_set_num_slot,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
202 NGX_HTTP_MAIN_CONF_OFFSET,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
203 offsetof(ngx_http_core_main_conf_t, variables_hash_max_size),
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
204 NULL },
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
205
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
206 { ngx_string("variables_hash_bucket_size"),
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
207 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
208 ngx_conf_set_num_slot,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
209 NGX_HTTP_MAIN_CONF_OFFSET,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
210 offsetof(ngx_http_core_main_conf_t, variables_hash_bucket_size),
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
211 NULL },
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
212
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
213 { ngx_string("server_names_hash_max_size"),
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
214 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
215 ngx_conf_set_num_slot,
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
216 NGX_HTTP_MAIN_CONF_OFFSET,
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
217 offsetof(ngx_http_core_main_conf_t, server_names_hash_max_size),
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
218 NULL },
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
219
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
220 { ngx_string("server_names_hash_bucket_size"),
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
221 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
222 ngx_conf_set_num_slot,
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
223 NGX_HTTP_MAIN_CONF_OFFSET,
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
224 offsetof(ngx_http_core_main_conf_t, server_names_hash_bucket_size),
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
225 NULL },
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
226
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
227 { ngx_string("server"),
4768
1c5e2e4d5b35 Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents: 4749
diff changeset
228 NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
229 ngx_http_core_server,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
230 0,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
231 0,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
232 NULL },
41
59e7c7f30d49 nginx-0.0.1-2002-12-26-19:26:23 import
Igor Sysoev <igor@sysoev.ru>
parents: 39
diff changeset
233
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
234 { ngx_string("connection_pool_size"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
235 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
236 ngx_conf_set_size_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
237 NGX_HTTP_SRV_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
238 offsetof(ngx_http_core_srv_conf_t, connection_pool_size),
1200
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
239 &ngx_http_core_pool_size_p },
64
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 60
diff changeset
240
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
241 { ngx_string("request_pool_size"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
242 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
243 ngx_conf_set_size_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
244 NGX_HTTP_SRV_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
245 offsetof(ngx_http_core_srv_conf_t, request_pool_size),
1200
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
246 &ngx_http_core_pool_size_p },
95
b48066122884 nginx-0.0.1-2003-05-23-15:53:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 94
diff changeset
247
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
248 { ngx_string("client_header_timeout"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
249 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
250 ngx_conf_set_msec_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
251 NGX_HTTP_SRV_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
252 offsetof(ngx_http_core_srv_conf_t, client_header_timeout),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
253 NULL },
64
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 60
diff changeset
254
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
255 { ngx_string("client_header_buffer_size"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
256 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
257 ngx_conf_set_size_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
258 NGX_HTTP_SRV_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
259 offsetof(ngx_http_core_srv_conf_t, client_header_buffer_size),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
260 NULL },
64
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 60
diff changeset
261
436
9549fc9508e5 nginx-0.0.11-2004-09-23-10:32:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
262 { ngx_string("large_client_header_buffers"),
435
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 434
diff changeset
263 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE2,
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 434
diff changeset
264 ngx_conf_set_bufs_slot,
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 434
diff changeset
265 NGX_HTTP_SRV_CONF_OFFSET,
436
9549fc9508e5 nginx-0.0.11-2004-09-23-10:32:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
266 offsetof(ngx_http_core_srv_conf_t, large_client_header_buffers),
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
267 NULL },
64
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 60
diff changeset
268
609
608cf78b24ef nginx-0.3.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
269 { ngx_string("optimize_server_names"),
608cf78b24ef nginx-0.3.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
270 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG,
608cf78b24ef nginx-0.3.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
271 ngx_conf_set_flag_slot,
2029
c036922f6f07 *) remove optimize_host_names
Igor Sysoev <igor@sysoev.ru>
parents: 2027
diff changeset
272 NGX_HTTP_LOC_CONF_OFFSET,
c036922f6f07 *) remove optimize_host_names
Igor Sysoev <igor@sysoev.ru>
parents: 2027
diff changeset
273 offsetof(ngx_http_core_loc_conf_t, server_name_in_redirect),
c036922f6f07 *) remove optimize_host_names
Igor Sysoev <igor@sysoev.ru>
parents: 2027
diff changeset
274 &ngx_conf_deprecated_optimize_server_names },
603
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
275
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
276 { ngx_string("ignore_invalid_headers"),
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
277 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG,
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
278 ngx_conf_set_flag_slot,
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
279 NGX_HTTP_SRV_CONF_OFFSET,
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
280 offsetof(ngx_http_core_srv_conf_t, ignore_invalid_headers),
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
281 NULL },
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
282
1585
4435ca2e467d merge_slashes
Igor Sysoev <igor@sysoev.ru>
parents: 1580
diff changeset
283 { ngx_string("merge_slashes"),
4435ca2e467d merge_slashes
Igor Sysoev <igor@sysoev.ru>
parents: 1580
diff changeset
284 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG,
4435ca2e467d merge_slashes
Igor Sysoev <igor@sysoev.ru>
parents: 1580
diff changeset
285 ngx_conf_set_flag_slot,
4435ca2e467d merge_slashes
Igor Sysoev <igor@sysoev.ru>
parents: 1580
diff changeset
286 NGX_HTTP_SRV_CONF_OFFSET,
4435ca2e467d merge_slashes
Igor Sysoev <igor@sysoev.ru>
parents: 1580
diff changeset
287 offsetof(ngx_http_core_srv_conf_t, merge_slashes),
4435ca2e467d merge_slashes
Igor Sysoev <igor@sysoev.ru>
parents: 1580
diff changeset
288 NULL },
4435ca2e467d merge_slashes
Igor Sysoev <igor@sysoev.ru>
parents: 1580
diff changeset
289
2256
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
290 { ngx_string("underscores_in_headers"),
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
291 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG,
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
292 ngx_conf_set_flag_slot,
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
293 NGX_HTTP_SRV_CONF_OFFSET,
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
294 offsetof(ngx_http_core_srv_conf_t, underscores_in_headers),
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
295 NULL },
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
296
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
297 { ngx_string("location"),
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
298 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_BLOCK|NGX_CONF_TAKE12,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
299 ngx_http_core_location,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
300 NGX_HTTP_SRV_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
301 0,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
302 NULL },
41
59e7c7f30d49 nginx-0.0.1-2002-12-26-19:26:23 import
Igor Sysoev <igor@sysoev.ru>
parents: 39
diff changeset
303
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
304 { ngx_string("listen"),
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
305 NGX_HTTP_SRV_CONF|NGX_CONF_1MORE,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
306 ngx_http_core_listen,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
307 NGX_HTTP_SRV_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
308 0,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
309 NULL },
54
27b628ef907e nginx-0.0.1-2003-01-28-18:56:37 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
310
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
311 { ngx_string("server_name"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
312 NGX_HTTP_SRV_CONF|NGX_CONF_1MORE,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
313 ngx_http_core_server_name,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
314 NGX_HTTP_SRV_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
315 0,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
316 NULL },
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
317
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
318 { ngx_string("types_hash_max_size"),
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
319 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
320 ngx_conf_set_num_slot,
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
321 NGX_HTTP_LOC_CONF_OFFSET,
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
322 offsetof(ngx_http_core_loc_conf_t, types_hash_max_size),
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
323 NULL },
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
324
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
325 { ngx_string("types_hash_bucket_size"),
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
326 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
327 ngx_conf_set_num_slot,
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
328 NGX_HTTP_LOC_CONF_OFFSET,
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
329 offsetof(ngx_http_core_loc_conf_t, types_hash_bucket_size),
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
330 NULL },
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
331
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
332 { ngx_string("types"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
333 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
334 |NGX_CONF_BLOCK|NGX_CONF_NOARGS,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
335 ngx_http_core_types,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
336 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
337 0,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
338 NULL },
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
339
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
340 { ngx_string("default_type"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
341 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
342 ngx_conf_set_str_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
343 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
344 offsetof(ngx_http_core_loc_conf_t, default_type),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
345 NULL },
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
346
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
347 { ngx_string("root"),
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
348 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
349 |NGX_CONF_TAKE1,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
350 ngx_http_core_root,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
351 NGX_HTTP_LOC_CONF_OFFSET,
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
352 0,
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
353 NULL },
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
354
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
355 { ngx_string("alias"),
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
356 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
357 ngx_http_core_root,
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
358 NGX_HTTP_LOC_CONF_OFFSET,
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
359 0,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
360 NULL },
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
361
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
362 { ngx_string("limit_except"),
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
363 NGX_HTTP_LOC_CONF|NGX_CONF_BLOCK|NGX_CONF_1MORE,
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
364 ngx_http_core_limit_except,
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
365 NGX_HTTP_LOC_CONF_OFFSET,
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
366 0,
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
367 NULL },
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
368
293
ec3c049681fd nginx-0.0.3-2004-03-19-08:25:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
369 { ngx_string("client_max_body_size"),
ec3c049681fd nginx-0.0.3-2004-03-19-08:25:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
370 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
663
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 657
diff changeset
371 ngx_conf_set_off_slot,
293
ec3c049681fd nginx-0.0.3-2004-03-19-08:25:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
372 NGX_HTTP_LOC_CONF_OFFSET,
ec3c049681fd nginx-0.0.3-2004-03-19-08:25:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
373 offsetof(ngx_http_core_loc_conf_t, client_max_body_size),
ec3c049681fd nginx-0.0.3-2004-03-19-08:25:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
374 NULL },
ec3c049681fd nginx-0.0.3-2004-03-19-08:25:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
375
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 300
diff changeset
376 { ngx_string("client_body_buffer_size"),
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 300
diff changeset
377 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 300
diff changeset
378 ngx_conf_set_size_slot,
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 300
diff changeset
379 NGX_HTTP_LOC_CONF_OFFSET,
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 300
diff changeset
380 offsetof(ngx_http_core_loc_conf_t, client_body_buffer_size),
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 300
diff changeset
381 NULL },
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 300
diff changeset
382
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
383 { ngx_string("client_body_timeout"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
384 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
385 ngx_conf_set_msec_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
386 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
387 offsetof(ngx_http_core_loc_conf_t, client_body_timeout),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
388 NULL },
162
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 160
diff changeset
389
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
390 { ngx_string("client_body_temp_path"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
391 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1234,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
392 ngx_conf_set_path_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
393 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
394 offsetof(ngx_http_core_loc_conf_t, client_body_temp_path),
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
395 NULL },
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
396
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 631
diff changeset
397 { ngx_string("client_body_in_file_only"),
2843
eb461016d980 update two previous commits again
Igor Sysoev <igor@sysoev.ru>
parents: 2842
diff changeset
398 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1073
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
399 ngx_conf_set_enum_slot,
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 631
diff changeset
400 NGX_HTTP_LOC_CONF_OFFSET,
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 631
diff changeset
401 offsetof(ngx_http_core_loc_conf_t, client_body_in_file_only),
1073
d82560e9d147 client_body_in_file_only any
Igor Sysoev <igor@sysoev.ru>
parents: 1070
diff changeset
402 &ngx_http_core_request_body_in_file },
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 631
diff changeset
403
2845
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
404 { ngx_string("client_body_in_single_buffer"),
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
405 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
406 ngx_conf_set_flag_slot,
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
407 NGX_HTTP_LOC_CONF_OFFSET,
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
408 offsetof(ngx_http_core_loc_conf_t, client_body_in_single_buffer),
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
409 NULL },
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
410
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
411 { ngx_string("sendfile"),
1070
b54a1e283d6d allow "sendfile" in "if" context
Igor Sysoev <igor@sysoev.ru>
parents: 1028
diff changeset
412 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
4132
cdc22824e22a Cosmetics: replaced NGX_CONF_TAKE1 to NGX_CONF_FLAG for "sendfile"
Ruslan Ermilov <ru@nginx.com>
parents: 4131
diff changeset
413 |NGX_CONF_FLAG,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
414 ngx_conf_set_flag_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
415 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
416 offsetof(ngx_http_core_loc_conf_t, sendfile),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
417 NULL },
154
eac26585476e nginx-0.0.1-2003-10-22-11:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 153
diff changeset
418
1197
493a227edfd5 sendfile_max_chunk
Igor Sysoev <igor@sysoev.ru>
parents: 1179
diff changeset
419 { ngx_string("sendfile_max_chunk"),
493a227edfd5 sendfile_max_chunk
Igor Sysoev <igor@sysoev.ru>
parents: 1179
diff changeset
420 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
493a227edfd5 sendfile_max_chunk
Igor Sysoev <igor@sysoev.ru>
parents: 1179
diff changeset
421 ngx_conf_set_size_slot,
493a227edfd5 sendfile_max_chunk
Igor Sysoev <igor@sysoev.ru>
parents: 1179
diff changeset
422 NGX_HTTP_LOC_CONF_OFFSET,
493a227edfd5 sendfile_max_chunk
Igor Sysoev <igor@sysoev.ru>
parents: 1179
diff changeset
423 offsetof(ngx_http_core_loc_conf_t, sendfile_max_chunk),
493a227edfd5 sendfile_max_chunk
Igor Sysoev <igor@sysoev.ru>
parents: 1179
diff changeset
424 NULL },
493a227edfd5 sendfile_max_chunk
Igor Sysoev <igor@sysoev.ru>
parents: 1179
diff changeset
425
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
426 #if (NGX_HAVE_FILE_AIO)
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
427
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
428 { ngx_string("aio"),
3065
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
429 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
430 ngx_conf_set_enum_slot,
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
431 NGX_HTTP_LOC_CONF_OFFSET,
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
432 offsetof(ngx_http_core_loc_conf_t, aio),
3065
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 3064
diff changeset
433 &ngx_http_core_aio },
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
434
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
435 #endif
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
436
3178
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3167
diff changeset
437 { ngx_string("read_ahead"),
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3167
diff changeset
438 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3167
diff changeset
439 ngx_conf_set_size_slot,
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3167
diff changeset
440 NGX_HTTP_LOC_CONF_OFFSET,
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3167
diff changeset
441 offsetof(ngx_http_core_loc_conf_t, read_ahead),
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3167
diff changeset
442 NULL },
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3167
diff changeset
443
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
444 { ngx_string("directio"),
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
445 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
446 ngx_http_core_directio,
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
447 NGX_HTTP_LOC_CONF_OFFSET,
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
448 0,
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
449 NULL },
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
450
3053
0d253659da12 directio_alignment
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
451 { ngx_string("directio_alignment"),
0d253659da12 directio_alignment
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
452 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
0d253659da12 directio_alignment
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
453 ngx_conf_set_off_slot,
0d253659da12 directio_alignment
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
454 NGX_HTTP_LOC_CONF_OFFSET,
0d253659da12 directio_alignment
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
455 offsetof(ngx_http_core_loc_conf_t, directio_alignment),
0d253659da12 directio_alignment
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
456 NULL },
0d253659da12 directio_alignment
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
457
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
458 { ngx_string("tcp_nopush"),
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
459 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
460 ngx_conf_set_flag_slot,
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
461 NGX_HTTP_LOC_CONF_OFFSET,
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
462 offsetof(ngx_http_core_loc_conf_t, tcp_nopush),
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
463 NULL },
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
464
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
465 { ngx_string("tcp_nodelay"),
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
466 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
467 ngx_conf_set_flag_slot,
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
468 NGX_HTTP_LOC_CONF_OFFSET,
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
469 offsetof(ngx_http_core_loc_conf_t, tcp_nodelay),
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
470 NULL },
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
471
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
472 { ngx_string("send_timeout"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
473 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
474 ngx_conf_set_msec_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
475 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
476 offsetof(ngx_http_core_loc_conf_t, send_timeout),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
477 NULL },
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
478
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
479 { ngx_string("send_lowat"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
480 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
481 ngx_conf_set_size_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
482 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
483 offsetof(ngx_http_core_loc_conf_t, send_lowat),
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
484 &ngx_http_core_lowat_post },
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
485
391
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
486 { ngx_string("postpone_output"),
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
487 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
488 ngx_conf_set_size_slot,
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
489 NGX_HTTP_LOC_CONF_OFFSET,
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
490 offsetof(ngx_http_core_loc_conf_t, postpone_output),
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
491 NULL },
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
492
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
493 { ngx_string("limit_rate"),
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
494 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
495 |NGX_CONF_TAKE1,
391
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
496 ngx_conf_set_size_slot,
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
497 NGX_HTTP_LOC_CONF_OFFSET,
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
498 offsetof(ngx_http_core_loc_conf_t, limit_rate),
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
499 NULL },
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
500
2907
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
501 { ngx_string("limit_rate_after"),
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
502 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
503 |NGX_CONF_TAKE1,
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
504 ngx_conf_set_size_slot,
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
505 NGX_HTTP_LOC_CONF_OFFSET,
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
506 offsetof(ngx_http_core_loc_conf_t, limit_rate_after),
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
507 NULL },
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
508
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
509 { ngx_string("keepalive_timeout"),
429
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
510 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
511 ngx_http_core_keepalive,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
512 NGX_HTTP_LOC_CONF_OFFSET,
429
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
513 0,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
514 NULL },
93
738fe44c70d5 nginx-0.0.1-2003-05-21-17:28:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 92
diff changeset
515
2888
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
516 { ngx_string("keepalive_requests"),
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
517 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
518 ngx_conf_set_num_slot,
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
519 NGX_HTTP_LOC_CONF_OFFSET,
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
520 offsetof(ngx_http_core_loc_conf_t, keepalive_requests),
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
521 NULL },
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
522
3793
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
523 { ngx_string("keepalive_disable"),
4266
4c45306936bb Fix of "keepalive_disable" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4225
diff changeset
524 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12,
4c45306936bb Fix of "keepalive_disable" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4225
diff changeset
525 ngx_conf_set_bitmask_slot,
3793
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
526 NGX_HTTP_LOC_CONF_OFFSET,
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
527 offsetof(ngx_http_core_loc_conf_t, keepalive_disable),
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
528 &ngx_http_core_keepalive_disable },
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
529
1806
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
530 { ngx_string("satisfy"),
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
531 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
532 ngx_conf_set_enum_slot,
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
533 NGX_HTTP_LOC_CONF_OFFSET,
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
534 offsetof(ngx_http_core_loc_conf_t, satisfy),
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
535 &ngx_http_core_satisfy },
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
536
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
537 { ngx_string("satisfy_any"),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
538 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
539 ngx_conf_set_flag_slot,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
540 NGX_HTTP_LOC_CONF_OFFSET,
1806
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
541 offsetof(ngx_http_core_loc_conf_t, satisfy),
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
542 &ngx_conf_deprecated_satisfy_any },
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
543
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
544 { ngx_string("internal"),
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
545 NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
546 ngx_http_core_internal,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
547 NGX_HTTP_LOC_CONF_OFFSET,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
548 0,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
549 NULL },
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
550
3984
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
551 { ngx_string("lingering_close"),
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
552 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
553 ngx_conf_set_enum_slot,
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
554 NGX_HTTP_LOC_CONF_OFFSET,
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
555 offsetof(ngx_http_core_loc_conf_t, lingering_close),
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
556 &ngx_http_core_lingering_close },
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
557
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
558 { ngx_string("lingering_time"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
559 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
560 ngx_conf_set_msec_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
561 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
562 offsetof(ngx_http_core_loc_conf_t, lingering_time),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
563 NULL },
67
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 64
diff changeset
564
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
565 { ngx_string("lingering_timeout"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
566 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
567 ngx_conf_set_msec_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
568 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
569 offsetof(ngx_http_core_loc_conf_t, lingering_timeout),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
570 NULL },
67
5a7d1aaa1618 nginx-0.0.1-2003-03-11-23:38:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 64
diff changeset
571
346
55e496a8ece3 nginx-0.0.3-2004-06-06-23:49:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
572 { ngx_string("reset_timedout_connection"),
55e496a8ece3 nginx-0.0.3-2004-06-06-23:49:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
573 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
55e496a8ece3 nginx-0.0.3-2004-06-06-23:49:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
574 ngx_conf_set_flag_slot,
55e496a8ece3 nginx-0.0.3-2004-06-06-23:49:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
575 NGX_HTTP_LOC_CONF_OFFSET,
55e496a8ece3 nginx-0.0.3-2004-06-06-23:49:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
576 offsetof(ngx_http_core_loc_conf_t, reset_timedout_connection),
55e496a8ece3 nginx-0.0.3-2004-06-06-23:49:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
577 NULL },
55e496a8ece3 nginx-0.0.3-2004-06-06-23:49:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
578
1804
d457a1576532 several changes in server_name:
Igor Sysoev <igor@sysoev.ru>
parents: 1801
diff changeset
579 { ngx_string("server_name_in_redirect"),
d457a1576532 several changes in server_name:
Igor Sysoev <igor@sysoev.ru>
parents: 1801
diff changeset
580 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
d457a1576532 several changes in server_name:
Igor Sysoev <igor@sysoev.ru>
parents: 1801
diff changeset
581 ngx_conf_set_flag_slot,
d457a1576532 several changes in server_name:
Igor Sysoev <igor@sysoev.ru>
parents: 1801
diff changeset
582 NGX_HTTP_LOC_CONF_OFFSET,
d457a1576532 several changes in server_name:
Igor Sysoev <igor@sysoev.ru>
parents: 1801
diff changeset
583 offsetof(ngx_http_core_loc_conf_t, server_name_in_redirect),
d457a1576532 several changes in server_name:
Igor Sysoev <igor@sysoev.ru>
parents: 1801
diff changeset
584 NULL },
d457a1576532 several changes in server_name:
Igor Sysoev <igor@sysoev.ru>
parents: 1801
diff changeset
585
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
586 { ngx_string("port_in_redirect"),
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
587 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
588 ngx_conf_set_flag_slot,
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
589 NGX_HTTP_LOC_CONF_OFFSET,
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
590 offsetof(ngx_http_core_loc_conf_t, port_in_redirect),
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
591 NULL },
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
592
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
593 { ngx_string("msie_padding"),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
594 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
595 ngx_conf_set_flag_slot,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
596 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
597 offsetof(ngx_http_core_loc_conf_t, msie_padding),
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
598 NULL },
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
599
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
600 { ngx_string("msie_refresh"),
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
601 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
602 ngx_conf_set_flag_slot,
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
603 NGX_HTTP_LOC_CONF_OFFSET,
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
604 offsetof(ngx_http_core_loc_conf_t, msie_refresh),
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
605 NULL },
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
606
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
607 { ngx_string("log_not_found"),
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
608 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
609 ngx_conf_set_flag_slot,
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
610 NGX_HTTP_LOC_CONF_OFFSET,
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
611 offsetof(ngx_http_core_loc_conf_t, log_not_found),
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
612 NULL },
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
613
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
614 { ngx_string("log_subrequest"),
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
615 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
616 ngx_conf_set_flag_slot,
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
617 NGX_HTTP_LOC_CONF_OFFSET,
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
618 offsetof(ngx_http_core_loc_conf_t, log_subrequest),
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
619 NULL },
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
620
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
621 { ngx_string("recursive_error_pages"),
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
622 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
623 ngx_conf_set_flag_slot,
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
624 NGX_HTTP_LOC_CONF_OFFSET,
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
625 offsetof(ngx_http_core_loc_conf_t, recursive_error_pages),
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
626 NULL },
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
627
1592
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1591
diff changeset
628 { ngx_string("server_tokens"),
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1591
diff changeset
629 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1591
diff changeset
630 ngx_conf_set_flag_slot,
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1591
diff changeset
631 NGX_HTTP_LOC_CONF_OFFSET,
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1591
diff changeset
632 offsetof(ngx_http_core_loc_conf_t, server_tokens),
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1591
diff changeset
633 NULL },
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1591
diff changeset
634
2361
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
635 { ngx_string("if_modified_since"),
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
636 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
637 ngx_conf_set_enum_slot,
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
638 NGX_HTTP_LOC_CONF_OFFSET,
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
639 offsetof(ngx_http_core_loc_conf_t, if_modified_since),
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
640 &ngx_http_core_if_modified_since },
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
641
4062
82738a316a54 The "max_ranges" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 3994
diff changeset
642 { ngx_string("max_ranges"),
82738a316a54 The "max_ranges" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 3994
diff changeset
643 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
82738a316a54 The "max_ranges" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 3994
diff changeset
644 ngx_conf_set_num_slot,
82738a316a54 The "max_ranges" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 3994
diff changeset
645 NGX_HTTP_LOC_CONF_OFFSET,
82738a316a54 The "max_ranges" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 3994
diff changeset
646 offsetof(ngx_http_core_loc_conf_t, max_ranges),
82738a316a54 The "max_ranges" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 3994
diff changeset
647 NULL },
82738a316a54 The "max_ranges" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 3994
diff changeset
648
3484
81457372d938 chunked_transfer_encoding
Igor Sysoev <igor@sysoev.ru>
parents: 3452
diff changeset
649 { ngx_string("chunked_transfer_encoding"),
4132
cdc22824e22a Cosmetics: replaced NGX_CONF_TAKE1 to NGX_CONF_FLAG for "sendfile"
Ruslan Ermilov <ru@nginx.com>
parents: 4131
diff changeset
650 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
3484
81457372d938 chunked_transfer_encoding
Igor Sysoev <igor@sysoev.ru>
parents: 3452
diff changeset
651 ngx_conf_set_flag_slot,
81457372d938 chunked_transfer_encoding
Igor Sysoev <igor@sysoev.ru>
parents: 3452
diff changeset
652 NGX_HTTP_LOC_CONF_OFFSET,
81457372d938 chunked_transfer_encoding
Igor Sysoev <igor@sysoev.ru>
parents: 3452
diff changeset
653 offsetof(ngx_http_core_loc_conf_t, chunked_transfer_encoding),
81457372d938 chunked_transfer_encoding
Igor Sysoev <igor@sysoev.ru>
parents: 3452
diff changeset
654 NULL },
81457372d938 chunked_transfer_encoding
Igor Sysoev <igor@sysoev.ru>
parents: 3452
diff changeset
655
4749
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
656 { ngx_string("etag"),
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
657 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
658 ngx_conf_set_flag_slot,
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
659 NGX_HTTP_LOC_CONF_OFFSET,
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
660 offsetof(ngx_http_core_loc_conf_t, etag),
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
661 NULL },
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
662
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
663 { ngx_string("error_page"),
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
664 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
665 |NGX_CONF_2MORE,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
666 ngx_http_core_error_page,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
667 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
668 0,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
669 NULL },
158
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
670
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
671 { ngx_string("try_files"),
2585
d0a07e5710b5 allow try_files in server context
Igor Sysoev <igor@sysoev.ru>
parents: 2584
diff changeset
672 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_2MORE,
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
673 ngx_http_core_try_files,
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
674 NGX_HTTP_LOC_CONF_OFFSET,
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
675 0,
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
676 NULL },
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
677
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
678 { ngx_string("post_action"),
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
679 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
680 |NGX_CONF_TAKE1,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
681 ngx_conf_set_str_slot,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
682 NGX_HTTP_LOC_CONF_OFFSET,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
683 offsetof(ngx_http_core_loc_conf_t, post_action),
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
684 NULL },
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
685
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
686 { ngx_string("error_log"),
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
687 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
688 ngx_http_core_error_log,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
689 NGX_HTTP_LOC_CONF_OFFSET,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
690 0,
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
691 NULL },
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
692
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
693 { ngx_string("open_file_cache"),
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
694 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12,
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
695 ngx_http_core_open_file_cache,
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
696 NGX_HTTP_LOC_CONF_OFFSET,
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
697 offsetof(ngx_http_core_loc_conf_t, open_file_cache),
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
698 NULL },
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
699
1767
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
700 { ngx_string("open_file_cache_valid"),
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
701 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
702 ngx_conf_set_sec_slot,
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
703 NGX_HTTP_LOC_CONF_OFFSET,
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
704 offsetof(ngx_http_core_loc_conf_t, open_file_cache_valid),
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
705 NULL },
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
706
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
707 { ngx_string("open_file_cache_retest"),
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
708 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
709 ngx_conf_set_sec_slot,
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
710 NGX_HTTP_LOC_CONF_OFFSET,
1767
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
711 offsetof(ngx_http_core_loc_conf_t, open_file_cache_valid),
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
712 &ngx_conf_deprecated_open_file_cache_retest },
119
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
713
1772
25c93614e6b9 open_file_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 1767
diff changeset
714 { ngx_string("open_file_cache_min_uses"),
25c93614e6b9 open_file_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 1767
diff changeset
715 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
25c93614e6b9 open_file_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 1767
diff changeset
716 ngx_conf_set_num_slot,
25c93614e6b9 open_file_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 1767
diff changeset
717 NGX_HTTP_LOC_CONF_OFFSET,
25c93614e6b9 open_file_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 1767
diff changeset
718 offsetof(ngx_http_core_loc_conf_t, open_file_cache_min_uses),
25c93614e6b9 open_file_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 1767
diff changeset
719 NULL },
25c93614e6b9 open_file_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 1767
diff changeset
720
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
721 { ngx_string("open_file_cache_errors"),
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
722 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
723 ngx_conf_set_flag_slot,
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
724 NGX_HTTP_LOC_CONF_OFFSET,
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
725 offsetof(ngx_http_core_loc_conf_t, open_file_cache_errors),
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
726 NULL },
287
35a6a9df2d25 nginx-0.0.2-2004-03-12-19:57:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 282
diff changeset
727
1457
223e92651ca5 open_file_cache_events
Igor Sysoev <igor@sysoev.ru>
parents: 1454
diff changeset
728 { ngx_string("open_file_cache_events"),
223e92651ca5 open_file_cache_events
Igor Sysoev <igor@sysoev.ru>
parents: 1454
diff changeset
729 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
223e92651ca5 open_file_cache_events
Igor Sysoev <igor@sysoev.ru>
parents: 1454
diff changeset
730 ngx_conf_set_flag_slot,
223e92651ca5 open_file_cache_events
Igor Sysoev <igor@sysoev.ru>
parents: 1454
diff changeset
731 NGX_HTTP_LOC_CONF_OFFSET,
223e92651ca5 open_file_cache_events
Igor Sysoev <igor@sysoev.ru>
parents: 1454
diff changeset
732 offsetof(ngx_http_core_loc_conf_t, open_file_cache_events),
223e92651ca5 open_file_cache_events
Igor Sysoev <igor@sysoev.ru>
parents: 1454
diff changeset
733 NULL },
223e92651ca5 open_file_cache_events
Igor Sysoev <igor@sysoev.ru>
parents: 1454
diff changeset
734
1652
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
735 { ngx_string("resolver"),
4225
016352c19049 Support of several servers in the "resolver" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4210
diff changeset
736 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
1652
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
737 ngx_http_core_resolver,
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
738 NGX_HTTP_LOC_CONF_OFFSET,
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
739 0,
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
740 NULL },
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
741
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
742 { ngx_string("resolver_timeout"),
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
743 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
744 ngx_conf_set_msec_slot,
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
745 NGX_HTTP_LOC_CONF_OFFSET,
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
746 offsetof(ngx_http_core_loc_conf_t, resolver_timeout),
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
747 NULL },
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
748
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
749 #if (NGX_HTTP_GZIP)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
750
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
751 { ngx_string("gzip_vary"),
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
752 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
753 ngx_conf_set_flag_slot,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
754 NGX_HTTP_LOC_CONF_OFFSET,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
755 offsetof(ngx_http_core_loc_conf_t, gzip_vary),
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
756 NULL },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
757
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
758 { ngx_string("gzip_http_version"),
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
759 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
760 ngx_conf_set_enum_slot,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
761 NGX_HTTP_LOC_CONF_OFFSET,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
762 offsetof(ngx_http_core_loc_conf_t, gzip_http_version),
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
763 &ngx_http_gzip_http_version },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
764
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
765 { ngx_string("gzip_proxied"),
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
766 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
767 ngx_conf_set_bitmask_slot,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
768 NGX_HTTP_LOC_CONF_OFFSET,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
769 offsetof(ngx_http_core_loc_conf_t, gzip_proxied),
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
770 &ngx_http_gzip_proxied_mask },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
771
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
772 { ngx_string("gzip_disable"),
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
773 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
774 ngx_http_gzip_disable,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
775 NGX_HTTP_LOC_CONF_OFFSET,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
776 0,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
777 NULL },
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
778
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
779 #endif
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
780
4477
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
781 #if (NGX_HAVE_OPENAT)
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
782
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
783 { ngx_string("disable_symlinks"),
4495
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
784 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12,
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
785 ngx_http_disable_symlinks,
4477
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
786 NGX_HTTP_LOC_CONF_OFFSET,
4495
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
787 0,
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
788 NULL },
4477
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
789
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
790 #endif
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
791
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
792 ngx_null_command
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
793 };
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
794
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
795
667
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
796 static ngx_http_module_t ngx_http_core_module_ctx = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
797 ngx_http_core_preconfiguration, /* preconfiguration */
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
798 NULL, /* postconfiguration */
177
4db54fdbcbe7 nginx-0.0.1-2003-11-10-20:17:31 import
Igor Sysoev <igor@sysoev.ru>
parents: 176
diff changeset
799
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
800 ngx_http_core_create_main_conf, /* create main configuration */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
801 ngx_http_core_init_main_conf, /* init main configuration */
69
e43f406e4525 nginx-0.0.1-2003-03-20-19:09:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 67
diff changeset
802
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
803 ngx_http_core_create_srv_conf, /* create server configuration */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
804 ngx_http_core_merge_srv_conf, /* merge server configuration */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
805
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
806 ngx_http_core_create_loc_conf, /* create location configuration */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
807 ngx_http_core_merge_loc_conf /* merge location configuration */
41
59e7c7f30d49 nginx-0.0.1-2002-12-26-19:26:23 import
Igor Sysoev <igor@sysoev.ru>
parents: 39
diff changeset
808 };
59e7c7f30d49 nginx-0.0.1-2002-12-26-19:26:23 import
Igor Sysoev <igor@sysoev.ru>
parents: 39
diff changeset
809
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
810
41
59e7c7f30d49 nginx-0.0.1-2002-12-26-19:26:23 import
Igor Sysoev <igor@sysoev.ru>
parents: 39
diff changeset
811 ngx_module_t ngx_http_core_module = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
812 NGX_MODULE_V1,
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 89
diff changeset
813 &ngx_http_core_module_ctx, /* module context */
41
59e7c7f30d49 nginx-0.0.1-2002-12-26-19:26:23 import
Igor Sysoev <igor@sysoev.ru>
parents: 39
diff changeset
814 ngx_http_core_commands, /* module directives */
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
815 NGX_HTTP_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
816 NULL, /* init master */
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
817 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
818 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
819 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
820 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
821 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
822 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
823 NGX_MODULE_V1_PADDING
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
824 };
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
825
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
826
2701
756f73ca1e39 support HEAD in proxy cache
Igor Sysoev <igor@sysoev.ru>
parents: 2695
diff changeset
827 ngx_str_t ngx_http_core_get_method = { 3, (u_char *) "GET " };
1882
4ca7c40af923 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1881
diff changeset
828
4ca7c40af923 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1881
diff changeset
829
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
830 void
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
831 ngx_http_handler(ngx_http_request_t *r)
89
29bf798b583f nginx-0.0.1-2003-05-15-19:42:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
832 {
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
833 ngx_http_core_main_conf_t *cmcf;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
834
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
835 r->connection->log->action = NULL;
89
29bf798b583f nginx-0.0.1-2003-05-15-19:42:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
836
29bf798b583f nginx-0.0.1-2003-05-15-19:42:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
837 r->connection->unexpected_eof = 0;
29bf798b583f nginx-0.0.1-2003-05-15-19:42:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
838
675
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 673
diff changeset
839 if (!r->internal) {
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
840 switch (r->headers_in.connection_type) {
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
841 case 0:
3846
005d5cf5b403 use boolean expression instead of "if"
Igor Sysoev <igor@sysoev.ru>
parents: 3806
diff changeset
842 r->keepalive = (r->http_version > NGX_HTTP_VERSION_10);
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
843 break;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
844
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
845 case NGX_HTTP_CONNECTION_CLOSE:
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
846 r->keepalive = 0;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
847 break;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
848
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
849 case NGX_HTTP_CONNECTION_KEEP_ALIVE:
153
c71aeb75c071 nginx-0.0.1-2003-10-21-20:49:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 152
diff changeset
850 r->keepalive = 1;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
851 break;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
852 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
853
4930
6f085bfcdb4d Request body: chunked transfer encoding support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4828
diff changeset
854 r->lingering_close = (r->headers_in.content_length_n > 0
6f085bfcdb4d Request body: chunked transfer encoding support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4828
diff changeset
855 || r->headers_in.chunked);
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
856 r->phase_handler = 0;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
857
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
858 } else {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
859 cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
860 r->phase_handler = cmcf->phase_engine.server_rewrite_index;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
861 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
862
716
d8d7c39e3a76 allowing handling 400 errors via proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents: 715
diff changeset
863 r->valid_location = 1;
3313
118169a8ec92 refactor gzip_vary handling
Igor Sysoev <igor@sysoev.ru>
parents: 3259
diff changeset
864 #if (NGX_HTTP_GZIP)
118169a8ec92 refactor gzip_vary handling
Igor Sysoev <igor@sysoev.ru>
parents: 3259
diff changeset
865 r->gzip_tested = 0;
118169a8ec92 refactor gzip_vary handling
Igor Sysoev <igor@sysoev.ru>
parents: 3259
diff changeset
866 r->gzip_ok = 0;
118169a8ec92 refactor gzip_vary handling
Igor Sysoev <igor@sysoev.ru>
parents: 3259
diff changeset
867 r->gzip_vary = 0;
118169a8ec92 refactor gzip_vary handling
Igor Sysoev <igor@sysoev.ru>
parents: 3259
diff changeset
868 #endif
716
d8d7c39e3a76 allowing handling 400 errors via proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents: 715
diff changeset
869
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
870 r->write_event_handler = ngx_http_core_run_phases;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
871 ngx_http_core_run_phases(r);
143
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
872 }
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
873
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
874
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
875 void
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
876 ngx_http_core_run_phases(ngx_http_request_t *r)
143
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
877 {
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
878 ngx_int_t rc;
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
879 ngx_http_phase_handler_t *ph;
143
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
880 ngx_http_core_main_conf_t *cmcf;
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
881
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
882 cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
883
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
884 ph = cmcf->phase_engine.handlers;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
885
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
886 while (ph[r->phase_handler].checker) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
887
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
888 rc = ph[r->phase_handler].checker(r, &ph[r->phase_handler]);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
889
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
890 if (rc == NGX_OK) {
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
891 return;
143
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
892 }
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
893 }
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
894 }
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
895
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
896
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
897 ngx_int_t
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
898 ngx_http_core_generic_phase(ngx_http_request_t *r, ngx_http_phase_handler_t *ph)
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
899 {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
900 ngx_int_t rc;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
901
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
902 /*
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
903 * generic phase checker,
3634
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
904 * used by the post read and pre-access phases
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
905 */
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
906
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
907 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
908 "generic phase: %ui", r->phase_handler);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
909
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
910 rc = ph->handler(r);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
911
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
912 if (rc == NGX_OK) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
913 r->phase_handler = ph->next;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
914 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
915 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
916
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
917 if (rc == NGX_DECLINED) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
918 r->phase_handler++;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
919 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
920 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
921
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
922 if (rc == NGX_AGAIN || rc == NGX_DONE) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
923 return NGX_OK;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
924 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
925
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
926 /* rc == NGX_ERROR || rc == NGX_HTTP_... */
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
927
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
928 ngx_http_finalize_request(r, rc);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
929
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
930 return NGX_OK;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
931 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
932
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
933
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
934 ngx_int_t
3634
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
935 ngx_http_core_rewrite_phase(ngx_http_request_t *r, ngx_http_phase_handler_t *ph)
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
936 {
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
937 ngx_int_t rc;
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
938
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
939 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
940 "rewrite phase: %ui", r->phase_handler);
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
941
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
942 rc = ph->handler(r);
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
943
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
944 if (rc == NGX_DECLINED) {
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
945 r->phase_handler++;
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
946 return NGX_AGAIN;
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
947 }
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
948
3797
96f17c930a9e revert processing NGX_OK and NGX_DONE in rewrite phase changed in r3634
Igor Sysoev <igor@sysoev.ru>
parents: 3793
diff changeset
949 if (rc == NGX_DONE) {
96f17c930a9e revert processing NGX_OK and NGX_DONE in rewrite phase changed in r3634
Igor Sysoev <igor@sysoev.ru>
parents: 3793
diff changeset
950 return NGX_OK;
96f17c930a9e revert processing NGX_OK and NGX_DONE in rewrite phase changed in r3634
Igor Sysoev <igor@sysoev.ru>
parents: 3793
diff changeset
951 }
96f17c930a9e revert processing NGX_OK and NGX_DONE in rewrite phase changed in r3634
Igor Sysoev <igor@sysoev.ru>
parents: 3793
diff changeset
952
3806
01542054f2c3 fix comment
Igor Sysoev <igor@sysoev.ru>
parents: 3805
diff changeset
953 /* NGX_OK, NGX_AGAIN, NGX_ERROR, NGX_HTTP_... */
3634
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
954
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
955 ngx_http_finalize_request(r, rc);
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
956
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
957 return NGX_OK;
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
958 }
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
959
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
960
40e356cf4176 add files missed in the previuos commit
Igor Sysoev <igor@sysoev.ru>
parents: 3632
diff changeset
961 ngx_int_t
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
962 ngx_http_core_find_config_phase(ngx_http_request_t *r,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
963 ngx_http_phase_handler_t *ph)
143
5526213be452 nginx-0.0.1-2003-10-10-19:10:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
964 {
1403
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
965 u_char *p;
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
966 size_t len;
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2435
diff changeset
967 ngx_int_t rc;
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
968 ngx_http_core_loc_conf_t *clcf;
71
59229033ae93 nginx-0.0.1-2003-04-08-19:40:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
969
489
45a460f82aec nginx-0.1.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
970 r->content_handler = NULL;
45a460f82aec nginx-0.1.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
971 r->uri_changed = 0;
45a460f82aec nginx-0.1.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
972
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
973 rc = ngx_http_core_find_location(r);
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
974
2186
ecce31d90117 *) regex match must return NGX_OK to stop regex searching,
Igor Sysoev <igor@sysoev.ru>
parents: 2185
diff changeset
975 if (rc == NGX_ERROR) {
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
976 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
977 return NGX_OK;
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
978 }
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
979
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
980 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
981
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
982 if (!r->internal && clcf->internal) {
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
983 ngx_http_finalize_request(r, NGX_HTTP_NOT_FOUND);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
984 return NGX_OK;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
985 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
986
555
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
987 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
988 "using configuration \"%s%V\"",
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
989 (clcf->noname ? "*" : (clcf->exact_match ? "=" : "")),
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
990 &clcf->name);
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
991
535
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
992 ngx_http_update_location_config(r);
294
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
993
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
994 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
663
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 657
diff changeset
995 "http cl:%O max:%O",
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
996 r->headers_in.content_length_n, clcf->client_max_body_size);
294
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
997
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
998 if (r->headers_in.content_length_n != -1
673
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
999 && !r->discard_body
294
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
1000 && clcf->client_max_body_size
663
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 657
diff changeset
1001 && clcf->client_max_body_size < r->headers_in.content_length_n)
294
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
1002 {
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
1003 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
1586
ad18d4814a86 fix typo
Igor Sysoev <igor@sysoev.ru>
parents: 1585
diff changeset
1004 "client intended to send too large body: %O bytes",
294
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
1005 r->headers_in.content_length_n);
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
1006
4973
44fcb9677c3f Avoid sending "100 Continue" on 413 Request Entity Too Large.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4947
diff changeset
1007 r->expect_tested = 1;
3078
680cab09818d discard request body before returning 413 error,
Igor Sysoev <igor@sysoev.ru>
parents: 3066
diff changeset
1008 (void) ngx_http_discard_request_body(r);
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1009 ngx_http_finalize_request(r, NGX_HTTP_REQUEST_ENTITY_TOO_LARGE);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1010 return NGX_OK;
294
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
1011 }
5cfd65b8b0a7 nginx-0.0.3-2004-03-23-09:01:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 293
diff changeset
1012
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1013 if (rc == NGX_DONE) {
4206
1a94a56a4e5d Clear old Location header (if any) while adding a new one.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4204
diff changeset
1014 ngx_http_clear_location(r);
1a94a56a4e5d Clear old Location header (if any) while adding a new one.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4204
diff changeset
1015
416
b9bd635011de nginx-0.0.10-2004-09-06-22:45:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
1016 r->headers_out.location = ngx_list_push(&r->headers_out.headers);
b9bd635011de nginx-0.0.10-2004-09-06-22:45:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
1017 if (r->headers_out.location == NULL) {
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1018 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1019 return NGX_OK;
190
02a715e85df1 nginx-0.0.1-2003-11-19-00:34:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 183
diff changeset
1020 }
02a715e85df1 nginx-0.0.1-2003-11-19-00:34:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 183
diff changeset
1021
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
1022 /*
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
1023 * we do not need to set the r->headers_out.location->hash and
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
1024 * r->headers_out.location->key fields
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
1025 */
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
1026
1403
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1027 if (r->args.len == 0) {
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1028 r->headers_out.location->value = clcf->name;
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1029
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1030 } else {
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1031 len = clcf->name.len + 1 + r->args.len;
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2043
diff changeset
1032 p = ngx_pnalloc(r->pool, len);
1403
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1033
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1034 if (p == NULL) {
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1035 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1036 return NGX_OK;
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1037 }
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1038
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1039 r->headers_out.location->value.len = len;
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1040 r->headers_out.location->value.data = p;
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1041
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1042 p = ngx_cpymem(p, clcf->name.data, clcf->name.len);
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1043 *p++ = '?';
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1044 ngx_memcpy(p, r->args.data, r->args.len);
99fb4fdbd53a auto redirect lost arguments
Igor Sysoev <igor@sysoev.ru>
parents: 1387
diff changeset
1045 }
190
02a715e85df1 nginx-0.0.1-2003-11-19-00:34:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 183
diff changeset
1046
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1047 ngx_http_finalize_request(r, NGX_HTTP_MOVED_PERMANENTLY);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1048 return NGX_OK;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1049 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1050
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1051 r->phase_handler++;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1052 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1053 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1054
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1055
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1056 ngx_int_t
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1057 ngx_http_core_post_rewrite_phase(ngx_http_request_t *r,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1058 ngx_http_phase_handler_t *ph)
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1059 {
2043
1d86674d1286 after URI was rewritten location configuration should be to a server's null one
Igor Sysoev <igor@sysoev.ru>
parents: 2029
diff changeset
1060 ngx_http_core_srv_conf_t *cscf;
1d86674d1286 after URI was rewritten location configuration should be to a server's null one
Igor Sysoev <igor@sysoev.ru>
parents: 2029
diff changeset
1061
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1062 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1063 "post rewrite phase: %ui", r->phase_handler);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1064
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1065 if (!r->uri_changed) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1066 r->phase_handler++;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1067 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1068 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1069
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1070 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1071 "uri changes: %d", r->uri_changes);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1072
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1073 /*
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1074 * gcc before 3.3 compiles the broken code for
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1075 * if (r->uri_changes-- == 0)
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1076 * if the r->uri_changes is defined as
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1077 * unsigned uri_changes:4
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1078 */
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1079
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1080 r->uri_changes--;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1081
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1082 if (r->uri_changes == 0) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1083 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1084 "rewrite or internal redirection cycle "
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1085 "while processing \"%V\"", &r->uri);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1086
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1087 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1088 return NGX_OK;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1089 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1090
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1091 r->phase_handler = ph->next;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1092
2043
1d86674d1286 after URI was rewritten location configuration should be to a server's null one
Igor Sysoev <igor@sysoev.ru>
parents: 2029
diff changeset
1093 cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
1d86674d1286 after URI was rewritten location configuration should be to a server's null one
Igor Sysoev <igor@sysoev.ru>
parents: 2029
diff changeset
1094 r->loc_conf = cscf->ctx->loc_conf;
1d86674d1286 after URI was rewritten location configuration should be to a server's null one
Igor Sysoev <igor@sysoev.ru>
parents: 2029
diff changeset
1095
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1096 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1097 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1098
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1099
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1100 ngx_int_t
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1101 ngx_http_core_access_phase(ngx_http_request_t *r, ngx_http_phase_handler_t *ph)
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1102 {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1103 ngx_int_t rc;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1104 ngx_http_core_loc_conf_t *clcf;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1105
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1106 if (r != r->main) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1107 r->phase_handler = ph->next;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1108 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1109 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1110
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1111 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1112 "access phase: %ui", r->phase_handler);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1113
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1114 rc = ph->handler(r);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1115
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1116 if (rc == NGX_DECLINED) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1117 r->phase_handler++;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1118 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1119 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1120
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1121 if (rc == NGX_AGAIN || rc == NGX_DONE) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1122 return NGX_OK;
190
02a715e85df1 nginx-0.0.1-2003-11-19-00:34:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 183
diff changeset
1123 }
02a715e85df1 nginx-0.0.1-2003-11-19-00:34:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 183
diff changeset
1124
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1125 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1126
1806
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
1127 if (clcf->satisfy == NGX_HTTP_SATISFY_ALL) {
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1128
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1129 if (rc == NGX_OK) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1130 r->phase_handler++;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1131 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1132 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1133
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1134 } else {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1135 if (rc == NGX_OK) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1136 r->access_code = 0;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1137
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1138 if (r->headers_out.www_authenticate) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1139 r->headers_out.www_authenticate->hash = 0;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1140 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1141
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1142 r->phase_handler = ph->next;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1143 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1144 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1145
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1146 if (rc == NGX_HTTP_FORBIDDEN || rc == NGX_HTTP_UNAUTHORIZED) {
5428
fcecb9c6a057 Fixed "satisfy any" if 403 is returned after 401 (ticket #285).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5388
diff changeset
1147 if (r->access_code != NGX_HTTP_UNAUTHORIZED) {
fcecb9c6a057 Fixed "satisfy any" if 403 is returned after 401 (ticket #285).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5388
diff changeset
1148 r->access_code = rc;
fcecb9c6a057 Fixed "satisfy any" if 403 is returned after 401 (ticket #285).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5388
diff changeset
1149 }
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1150
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1151 r->phase_handler++;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1152 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1153 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1154 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1155
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1156 /* rc == NGX_ERROR || rc == NGX_HTTP_... */
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1157
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1158 ngx_http_finalize_request(r, rc);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1159 return NGX_OK;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1160 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1161
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1162
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1163 ngx_int_t
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1164 ngx_http_core_post_access_phase(ngx_http_request_t *r,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1165 ngx_http_phase_handler_t *ph)
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1166 {
3886
901d9d93e71b "satisfy any" disabled custom 401 error page
Igor Sysoev <igor@sysoev.ru>
parents: 3855
diff changeset
1167 ngx_int_t access_code;
901d9d93e71b "satisfy any" disabled custom 401 error page
Igor Sysoev <igor@sysoev.ru>
parents: 3855
diff changeset
1168
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1169 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1170 "post access phase: %ui", r->phase_handler);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1171
3886
901d9d93e71b "satisfy any" disabled custom 401 error page
Igor Sysoev <igor@sysoev.ru>
parents: 3855
diff changeset
1172 access_code = r->access_code;
901d9d93e71b "satisfy any" disabled custom 401 error page
Igor Sysoev <igor@sysoev.ru>
parents: 3855
diff changeset
1173
901d9d93e71b "satisfy any" disabled custom 401 error page
Igor Sysoev <igor@sysoev.ru>
parents: 3855
diff changeset
1174 if (access_code) {
901d9d93e71b "satisfy any" disabled custom 401 error page
Igor Sysoev <igor@sysoev.ru>
parents: 3855
diff changeset
1175 if (access_code == NGX_HTTP_FORBIDDEN) {
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1176 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1177 "access forbidden by rule");
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1178 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1179
3886
901d9d93e71b "satisfy any" disabled custom 401 error page
Igor Sysoev <igor@sysoev.ru>
parents: 3855
diff changeset
1180 r->access_code = 0;
901d9d93e71b "satisfy any" disabled custom 401 error page
Igor Sysoev <igor@sysoev.ru>
parents: 3855
diff changeset
1181 ngx_http_finalize_request(r, access_code);
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1182 return NGX_OK;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1183 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1184
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1185 r->phase_handler++;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1186 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1187 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1188
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1189
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1190 ngx_int_t
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1191 ngx_http_core_try_files_phase(ngx_http_request_t *r,
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1192 ngx_http_phase_handler_t *ph)
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1193 {
2481
d4fd929fb486 fix types and add comment
Igor Sysoev <igor@sysoev.ru>
parents: 2458
diff changeset
1194 size_t len, root, alias, reserve, allocated;
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1195 u_char *p, *name;
2579
67fea87a6652 split args in a try_files fallback
Igor Sysoev <igor@sysoev.ru>
parents: 2573
diff changeset
1196 ngx_str_t path, args;
2458
43dcf8cc2cb1 allow directories in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2453
diff changeset
1197 ngx_uint_t test_dir;
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1198 ngx_http_try_file_t *tf;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1199 ngx_open_file_info_t of;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1200 ngx_http_script_code_pt code;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1201 ngx_http_script_engine_t e;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1202 ngx_http_core_loc_conf_t *clcf;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1203 ngx_http_script_len_code_pt lcode;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1204
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1205 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1206 "try files phase: %ui", r->phase_handler);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1207
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1208 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1209
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1210 if (clcf->try_files == NULL) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1211 r->phase_handler++;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1212 return NGX_AGAIN;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1213 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1214
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1215 allocated = 0;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1216 root = 0;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1217 name = NULL;
2481
d4fd929fb486 fix types and add comment
Igor Sysoev <igor@sysoev.ru>
parents: 2458
diff changeset
1218 /* suppress MSVC warning */
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1219 path.data = NULL;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1220
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1221 tf = clcf->try_files;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1222
3535
abb3901be800 fix handling an inherited alias in inclusive location
Igor Sysoev <igor@sysoev.ru>
parents: 3534
diff changeset
1223 alias = clcf->alias;
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1224
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1225 for ( ;; ) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1226
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1227 if (tf->lengths) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1228 ngx_memzero(&e, sizeof(ngx_http_script_engine_t));
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1229
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1230 e.ip = tf->lengths->elts;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1231 e.request = r;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1232
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1233 /* 1 is for terminating '\0' as in static names */
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1234 len = 1;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1235
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1236 while (*(uintptr_t *) e.ip) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1237 lcode = *(ngx_http_script_len_code_pt *) e.ip;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1238 len += lcode(&e);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1239 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1240
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1241 } else {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1242 len = tf->name.len;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1243 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1244
4583
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1245 if (!alias) {
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1246 reserve = len > r->uri.len ? len - r->uri.len : 0;
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1247
5697
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
1248 } else if (alias == NGX_MAX_SIZE_T_VALUE) {
4583
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1249 reserve = len;
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1250
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1251 } else {
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1252 reserve = len > r->uri.len - alias ? len - (r->uri.len - alias) : 0;
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1253 }
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1254
4600
f1a7633b20a4 Fixed segfault with try_files (ticket #152).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4583
diff changeset
1255 if (reserve > allocated || !allocated) {
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1256
4583
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1257 /* 16 bytes are preallocation */
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1258 allocated = reserve + 16;
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1259
a1d5842064f7 Fixed buffer overflow when long URI is processed by "try_files" in
Ruslan Ermilov <ru@nginx.com>
parents: 4551
diff changeset
1260 if (ngx_http_map_uri_to_path(r, &path, &root, allocated) == NULL) {
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1261 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1262 return NGX_OK;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1263 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1264
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1265 name = path.data + root;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1266 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1267
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1268 if (tf->values == NULL) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1269
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1270 /* tf->name.len includes the terminating '\0' */
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1271
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1272 ngx_memcpy(name, tf->name.data, tf->name.len);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1273
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1274 path.len = (name + tf->name.len - 1) - path.data;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1275
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1276 } else {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1277 e.ip = tf->values->elts;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1278 e.pos = name;
2424
46d11bff21ef flush variable values in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2423
diff changeset
1279 e.flushed = 1;
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1280
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1281 while (*(uintptr_t *) e.ip) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1282 code = *(ngx_http_script_code_pt *) e.ip;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1283 code((ngx_http_script_engine_t *) &e);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1284 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1285
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1286 path.len = e.pos - path.data;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1287
2564
47839f59ce2a remove unneeded increment
Igor Sysoev <igor@sysoev.ru>
parents: 2562
diff changeset
1288 *e.pos = '\0';
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1289
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1290 if (alias && ngx_strncmp(name, clcf->name.data, alias) == 0) {
3887
e7798b5e990a use memmove() in appropriate places
Igor Sysoev <igor@sysoev.ru>
parents: 3886
diff changeset
1291 ngx_memmove(name, name + alias, len - alias);
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1292 path.len -= alias;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1293 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1294 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1295
2458
43dcf8cc2cb1 allow directories in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2453
diff changeset
1296 test_dir = tf->test_dir;
43dcf8cc2cb1 allow directories in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2453
diff changeset
1297
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1298 tf++;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1299
3532
a8966b3c1fcf fix the previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 3531
diff changeset
1300 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
1301 "trying to use %s: \"%s\" \"%s\"",
3531
beca01195937 improve debug logging: "try to use file/dir"
Igor Sysoev <igor@sysoev.ru>
parents: 3527
diff changeset
1302 test_dir ? "dir" : "file", name, path.data);
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1303
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1304 if (tf->lengths == NULL && tf->name.len == 0) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1305
2695
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
1306 if (tf->code) {
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
1307 ngx_http_finalize_request(r, tf->code);
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
1308 return NGX_OK;
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
1309 }
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
1310
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1311 path.len -= root;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1312 path.data += root;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1313
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1314 if (path.data[0] == '@') {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1315 (void) ngx_http_named_location(r, &path);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1316
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1317 } else {
2579
67fea87a6652 split args in a try_files fallback
Igor Sysoev <igor@sysoev.ru>
parents: 2573
diff changeset
1318 ngx_http_split_args(r, &path, &args);
67fea87a6652 split args in a try_files fallback
Igor Sysoev <igor@sysoev.ru>
parents: 2573
diff changeset
1319
67fea87a6652 split args in a try_files fallback
Igor Sysoev <igor@sysoev.ru>
parents: 2573
diff changeset
1320 (void) ngx_http_internal_redirect(r, &path, &args);
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1321 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1322
3066
67dc311964b8 fix request counter handling for try_files, introduced in r3050
Igor Sysoev <igor@sysoev.ru>
parents: 3065
diff changeset
1323 ngx_http_finalize_request(r, NGX_DONE);
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1324 return NGX_OK;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1325 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1326
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1327 ngx_memzero(&of, sizeof(ngx_open_file_info_t));
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1328
4325
b278e6e514fd Fix for read_head with try_files and open_file_cache.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4323
diff changeset
1329 of.read_ahead = clcf->read_ahead;
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1330 of.directio = clcf->directio;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1331 of.valid = clcf->open_file_cache_valid;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1332 of.min_uses = clcf->open_file_cache_min_uses;
2756
09cab3f8d92e *) of.test_only to not open file if only stat() is enough
Igor Sysoev <igor@sysoev.ru>
parents: 2749
diff changeset
1333 of.test_only = 1;
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1334 of.errors = clcf->open_file_cache_errors;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1335 of.events = clcf->open_file_cache_events;
4494
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
1336
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
1337 if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
1338 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
1339 return NGX_OK;
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
1340 }
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1341
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1342 if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1343 != NGX_OK)
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1344 {
3160
a7637c2c1157 low ENAMETOOLONG logging level
Igor Sysoev <igor@sysoev.ru>
parents: 3122
diff changeset
1345 if (of.err != NGX_ENOENT
a7637c2c1157 low ENAMETOOLONG logging level
Igor Sysoev <igor@sysoev.ru>
parents: 3122
diff changeset
1346 && of.err != NGX_ENOTDIR
a7637c2c1157 low ENAMETOOLONG logging level
Igor Sysoev <igor@sysoev.ru>
parents: 3122
diff changeset
1347 && of.err != NGX_ENAMETOOLONG)
a7637c2c1157 low ENAMETOOLONG logging level
Igor Sysoev <igor@sysoev.ru>
parents: 3122
diff changeset
1348 {
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1349 ngx_log_error(NGX_LOG_CRIT, r->connection->log, of.err,
2756
09cab3f8d92e *) of.test_only to not open file if only stat() is enough
Igor Sysoev <igor@sysoev.ru>
parents: 2749
diff changeset
1350 "%s \"%s\" failed", of.failed, path.data);
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1351 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1352
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1353 continue;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1354 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1355
2458
43dcf8cc2cb1 allow directories in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2453
diff changeset
1356 if (of.is_dir && !test_dir) {
2453
1e53534e6800 try_files should work with files only
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
1357 continue;
1e53534e6800 try_files should work with files only
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
1358 }
1e53534e6800 try_files should work with files only
Igor Sysoev <igor@sysoev.ru>
parents: 2436
diff changeset
1359
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1360 path.len -= root;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1361 path.data += root;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1362
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1363 if (!alias) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1364 r->uri = path;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1365
5697
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
1366 } else if (alias == NGX_MAX_SIZE_T_VALUE) {
3533
bb5376f3f585 do not add tested file to a location regex string,
Igor Sysoev <igor@sysoev.ru>
parents: 3532
diff changeset
1367 if (!test_dir) {
bb5376f3f585 do not add tested file to a location regex string,
Igor Sysoev <igor@sysoev.ru>
parents: 3532
diff changeset
1368 r->uri = path;
3534
3711bb1336c3 fix a try_files/alias case when alias uses captures and
Igor Sysoev <igor@sysoev.ru>
parents: 3533
diff changeset
1369 r->add_uri_to_alias = 1;
3533
bb5376f3f585 do not add tested file to a location regex string,
Igor Sysoev <igor@sysoev.ru>
parents: 3532
diff changeset
1370 }
5697
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
1371
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1372 } else {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1373 r->uri.len = alias + path.len;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1374 r->uri.data = ngx_pnalloc(r->pool, r->uri.len);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1375 if (r->uri.data == NULL) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1376 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1377 return NGX_OK;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1378 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1379
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1380 p = ngx_copy(r->uri.data, clcf->name.data, alias);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1381 ngx_memcpy(p, name, path.len);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1382 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1383
2979
b941147f2b2e ngx_http_set_exten() is always successful since 0.3.46
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
1384 ngx_http_set_exten(r);
2503
7b0711452b34 set content-type for try_files' choice
Igor Sysoev <igor@sysoev.ru>
parents: 2496
diff changeset
1385
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1386 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1387 "try file uri: \"%V\"", &r->uri);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1388
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1389 r->phase_handler++;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1390 return NGX_AGAIN;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1391 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1392
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1393 /* not reached */
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1394 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1395
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1396
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
1397 ngx_int_t
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1398 ngx_http_core_content_phase(ngx_http_request_t *r,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1399 ngx_http_phase_handler_t *ph)
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1400 {
773
c3ebeee31026 remove r->root_length
Igor Sysoev <igor@sysoev.ru>
parents: 772
diff changeset
1401 size_t root;
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1402 ngx_int_t rc;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1403 ngx_str_t path;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1404
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1405 if (r->content_handler) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1406 r->write_event_handler = ngx_http_request_empty_handler;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1407 ngx_http_finalize_request(r, r->content_handler(r));
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1408 return NGX_OK;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1409 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1410
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1411 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1412 "content phase: %ui", r->phase_handler);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1413
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1414 rc = ph->handler(r);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1415
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1416 if (rc != NGX_DECLINED) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1417 ngx_http_finalize_request(r, rc);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1418 return NGX_OK;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1419 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1420
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1421 /* rc == NGX_DECLINED */
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1422
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1423 ph++;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1424
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1425 if (ph->checker) {
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1426 r->phase_handler++;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1427 return NGX_AGAIN;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1428 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1429
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1430 /* no content handler was found */
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1431
3527
84905c7b2aa7 remove r->zero_in_uri
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
1432 if (r->uri.data[r->uri.len - 1] == '/') {
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1433
773
c3ebeee31026 remove r->root_length
Igor Sysoev <igor@sysoev.ru>
parents: 772
diff changeset
1434 if (ngx_http_map_uri_to_path(r, &path, &root, 0) != NULL) {
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1435 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
1546
2956fb9b7dcb omit trailing zero in directory name
Igor Sysoev <igor@sysoev.ru>
parents: 1489
diff changeset
1436 "directory index of \"%s\" is forbidden", path.data);
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1437 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1438
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1439 ngx_http_finalize_request(r, NGX_HTTP_FORBIDDEN);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1440 return NGX_OK;
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1441 }
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1442
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1443 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "no handler found");
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1444
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
1445 ngx_http_finalize_request(r, NGX_HTTP_NOT_FOUND);
535
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1446 return NGX_OK;
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1447 }
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1448
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1449
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1450 void
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1451 ngx_http_update_location_config(ngx_http_request_t *r)
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1452 {
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1453 ngx_http_core_loc_conf_t *clcf;
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1454
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1455 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1456
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
1457 if (r->method & clcf->limit_except) {
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
1458 r->loc_conf = clcf->limit_except_loc_conf;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
1459 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
1460 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
1461
643
947c6fd27699 nginx-0.3.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 641
diff changeset
1462 if (r == r->main) {
5086
1b204b8ea9a3 Introduced the ngx_http_set_connection_log() macro.
Valentin Bartenev <vbart@nginx.com>
parents: 5084
diff changeset
1463 ngx_http_set_connection_log(r->connection, clcf->error_log);
535
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1464 }
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1465
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1466 if ((ngx_io.flags & NGX_IO_SENDFILE) && clcf->sendfile) {
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1467 r->connection->sendfile = 1;
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1468
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1469 } else {
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1470 r->connection->sendfile = 0;
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1471 }
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1472
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 631
diff changeset
1473 if (clcf->client_body_in_file_only) {
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 631
diff changeset
1474 r->request_body_in_file_only = 1;
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 631
diff changeset
1475 r->request_body_in_persistent_file = 1;
1075
4d203f76b757 undo "client_body_in_file_only any"
Igor Sysoev <igor@sysoev.ru>
parents: 1073
diff changeset
1476 r->request_body_in_clean_file =
4d203f76b757 undo "client_body_in_file_only any"
Igor Sysoev <igor@sysoev.ru>
parents: 1073
diff changeset
1477 clcf->client_body_in_file_only == NGX_HTTP_REQUEST_BODY_FILE_CLEAN;
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 635
diff changeset
1478 r->request_body_file_log_level = NGX_LOG_NOTICE;
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 635
diff changeset
1479
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 635
diff changeset
1480 } else {
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 635
diff changeset
1481 r->request_body_file_log_level = NGX_LOG_WARN;
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 631
diff changeset
1482 }
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 631
diff changeset
1483
2845
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
1484 r->request_body_in_single_buf = clcf->client_body_in_single_buffer;
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
1485
2888
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
1486 if (r->keepalive) {
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
1487 if (clcf->keepalive_timeout == 0) {
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
1488 r->keepalive = 0;
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
1489
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
1490 } else if (r->connection->requests >= clcf->keepalive_requests) {
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
1491 r->keepalive = 0;
3793
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1492
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1493 } else if (r->headers_in.msie6
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1494 && r->method == NGX_HTTP_POST
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1495 && (clcf->keepalive_disable
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1496 & NGX_HTTP_KEEPALIVE_DISABLE_MSIE6))
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1497 {
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1498 /*
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1499 * MSIE may wait for some time if an response for
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1500 * a POST request was sent over a keepalive connection
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1501 */
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1502 r->keepalive = 0;
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1503
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1504 } else if (r->headers_in.safari
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1505 && (clcf->keepalive_disable
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1506 & NGX_HTTP_KEEPALIVE_DISABLE_SAFARI))
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1507 {
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1508 /*
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1509 * Safari may send a POST request to a closed keepalive
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1510 * connection and may stall for some time, see
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1511 * https://bugs.webkit.org/show_bug.cgi?id=5760
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1512 */
279083731ec6 keepalive_disable
Igor Sysoev <igor@sysoev.ru>
parents: 3781
diff changeset
1513 r->keepalive = 0;
2888
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
1514 }
535
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1515 }
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1516
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1517 if (!clcf->tcp_nopush) {
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1518 /* disable TCP_NOPUSH/TCP_CORK use */
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1519 r->connection->tcp_nopush = NGX_TCP_NOPUSH_DISABLED;
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1520 }
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
1521
613
c73c5c58c619 nginx-0.3.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 611
diff changeset
1522 if (r->limit_rate == 0) {
c73c5c58c619 nginx-0.3.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 611
diff changeset
1523 r->limit_rate = clcf->limit_rate;
c73c5c58c619 nginx-0.3.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 611
diff changeset
1524 }
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
1525
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
1526 if (clcf->handler) {
148
5afee0074707 nginx-0.0.1-2003-10-17-00:19:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 144
diff changeset
1527 r->content_handler = clcf->handler;
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
1528 }
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
1529 }
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
1530
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
1531
2186
ecce31d90117 *) regex match must return NGX_OK to stop regex searching,
Igor Sysoev <igor@sysoev.ru>
parents: 2185
diff changeset
1532 /*
ecce31d90117 *) regex match must return NGX_OK to stop regex searching,
Igor Sysoev <igor@sysoev.ru>
parents: 2185
diff changeset
1533 * NGX_OK - exact or regex match
ecce31d90117 *) regex match must return NGX_OK to stop regex searching,
Igor Sysoev <igor@sysoev.ru>
parents: 2185
diff changeset
1534 * NGX_DONE - auto redirect
ecce31d90117 *) regex match must return NGX_OK to stop regex searching,
Igor Sysoev <igor@sysoev.ru>
parents: 2185
diff changeset
1535 * NGX_AGAIN - inclusive match
ecce31d90117 *) regex match must return NGX_OK to stop regex searching,
Igor Sysoev <igor@sysoev.ru>
parents: 2185
diff changeset
1536 * NGX_ERROR - regex error
ecce31d90117 *) regex match must return NGX_OK to stop regex searching,
Igor Sysoev <igor@sysoev.ru>
parents: 2185
diff changeset
1537 * NGX_DECLINED - no match
ecce31d90117 *) regex match must return NGX_OK to stop regex searching,
Igor Sysoev <igor@sysoev.ru>
parents: 2185
diff changeset
1538 */
ecce31d90117 *) regex match must return NGX_OK to stop regex searching,
Igor Sysoev <igor@sysoev.ru>
parents: 2185
diff changeset
1539
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1540 static ngx_int_t
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1541 ngx_http_core_find_location(ngx_http_request_t *r)
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1542 {
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1543 ngx_int_t rc;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1544 ngx_http_core_loc_conf_t *pclcf;
2185
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1545 #if (NGX_PCRE)
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1546 ngx_int_t n;
2185
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1547 ngx_uint_t noregex;
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1548 ngx_http_core_loc_conf_t *clcf, **clcfp;
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1549
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1550 noregex = 0;
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1551 #endif
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1552
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1553 pclcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1554
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1555 rc = ngx_http_core_find_static_location(r, pclcf->static_locations);
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1556
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1557 if (rc == NGX_AGAIN) {
2185
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1558
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1559 #if (NGX_PCRE)
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1560 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1561
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1562 noregex = clcf->noregex;
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1563 #endif
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1564
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1565 /* look up nested locations */
2185
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1566
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1567 rc = ngx_http_core_find_location(r);
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1568 }
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1569
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1570 if (rc == NGX_OK || rc == NGX_DONE) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1571 return rc;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1572 }
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1573
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1574 /* rc == NGX_DECLINED or rc == NGX_AGAIN in nested location */
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1575
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1576 #if (NGX_PCRE)
2185
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1577
e9420c1b6f25 fix noregex for inclusive locations
Igor Sysoev <igor@sysoev.ru>
parents: 2138
diff changeset
1578 if (noregex == 0 && pclcf->regex_locations) {
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1579
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1580 for (clcfp = pclcf->regex_locations; *clcfp; clcfp++) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1581
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1582 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1583 "test location: ~ \"%V\"", &(*clcfp)->name);
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1584
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1585 n = ngx_http_regex_exec(r, (*clcfp)->regex, &r->uri);
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1586
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1587 if (n == NGX_OK) {
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1588 r->loc_conf = (*clcfp)->loc_conf;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1589
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1590 /* look up nested locations */
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1591
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1592 rc = ngx_http_core_find_location(r);
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1593
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1594 return (rc == NGX_ERROR) ? rc : NGX_OK;
2548
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
1595 }
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
1596
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1597 if (n == NGX_DECLINED) {
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1598 continue;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1599 }
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1600
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
1601 return NGX_ERROR;
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1602 }
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1603 }
1386
3c6da0610f19 fix building by bcc without PCRE
Igor Sysoev <igor@sysoev.ru>
parents: 1377
diff changeset
1604 #endif
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1605
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1606 return rc;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1607 }
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1608
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1609
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1610 /*
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1611 * NGX_OK - exact match
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1612 * NGX_DONE - auto redirect
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1613 * NGX_AGAIN - inclusive match
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1614 * NGX_DECLINED - no match
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1615 */
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1616
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1617 static ngx_int_t
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1618 ngx_http_core_find_static_location(ngx_http_request_t *r,
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1619 ngx_http_location_tree_node_t *node)
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1620 {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1621 u_char *uri;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1622 size_t len, n;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1623 ngx_int_t rc, rv;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1624
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1625 len = r->uri.len;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1626 uri = r->uri.data;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1627
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1628 rv = NGX_DECLINED;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1629
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1630 for ( ;; ) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1631
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1632 if (node == NULL) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1633 return rv;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1634 }
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1635
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1636 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1637 "test location: \"%*s\"", node->len, node->name);
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1638
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1639 n = (len <= (size_t) node->len) ? len : node->len;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1640
2126
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 2085
diff changeset
1641 rc = ngx_filename_cmp(uri, node->name, n);
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1642
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1643 if (rc != 0) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1644 node = (rc < 0) ? node->left : node->right;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1645
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1646 continue;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1647 }
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1648
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1649 if (len > (size_t) node->len) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1650
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1651 if (node->inclusive) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1652
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1653 r->loc_conf = node->inclusive->loc_conf;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1654 rv = NGX_AGAIN;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1655
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1656 node = node->tree;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1657 uri += n;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1658 len -= n;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1659
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1660 continue;
400
69e851f83522 nginx-0.0.8-2004-07-26-20:21:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 396
diff changeset
1661 }
69e851f83522 nginx-0.0.8-2004-07-26-20:21:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 396
diff changeset
1662
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1663 /* exact only */
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1664
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1665 node = node->right;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1666
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1667 continue;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1668 }
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1669
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1670 if (len == (size_t) node->len) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1671
3636
446f611b0a79 Test regex location if URI matches exactly to non-exact location.
Igor Sysoev <igor@sysoev.ru>
parents: 3634
diff changeset
1672 if (node->exact) {
446f611b0a79 Test regex location if URI matches exactly to non-exact location.
Igor Sysoev <igor@sysoev.ru>
parents: 3634
diff changeset
1673 r->loc_conf = node->exact->loc_conf;
446f611b0a79 Test regex location if URI matches exactly to non-exact location.
Igor Sysoev <igor@sysoev.ru>
parents: 3634
diff changeset
1674 return NGX_OK;
446f611b0a79 Test regex location if URI matches exactly to non-exact location.
Igor Sysoev <igor@sysoev.ru>
parents: 3634
diff changeset
1675
446f611b0a79 Test regex location if URI matches exactly to non-exact location.
Igor Sysoev <igor@sysoev.ru>
parents: 3634
diff changeset
1676 } else {
446f611b0a79 Test regex location if URI matches exactly to non-exact location.
Igor Sysoev <igor@sysoev.ru>
parents: 3634
diff changeset
1677 r->loc_conf = node->inclusive->loc_conf;
446f611b0a79 Test regex location if URI matches exactly to non-exact location.
Igor Sysoev <igor@sysoev.ru>
parents: 3634
diff changeset
1678 return NGX_AGAIN;
446f611b0a79 Test regex location if URI matches exactly to non-exact location.
Igor Sysoev <igor@sysoev.ru>
parents: 3634
diff changeset
1679 }
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1680 }
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1681
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1682 /* len < node->len */
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1683
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1684 if (len + 1 == (size_t) node->len && node->auto_redirect) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1685
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1686 r->loc_conf = (node->exact) ? node->exact->loc_conf:
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1687 node->inclusive->loc_conf;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1688 rv = NGX_DONE;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1689 }
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1690
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
1691 node = node->left;
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1692 }
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1693 }
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1694
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
1695
2138
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1696 void *
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1697 ngx_http_test_content_type(ngx_http_request_t *r, ngx_hash_t *types_hash)
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1698 {
2881
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1699 u_char c, *lowcase;
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1700 size_t len;
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1701 ngx_uint_t i, hash;
2138
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1702
3372
6b8e5c882e47 support "*" in gzip_types, ssi_types, etc
Igor Sysoev <igor@sysoev.ru>
parents: 3368
diff changeset
1703 if (types_hash->size == 0) {
6b8e5c882e47 support "*" in gzip_types, ssi_types, etc
Igor Sysoev <igor@sysoev.ru>
parents: 3368
diff changeset
1704 return (void *) 4;
6b8e5c882e47 support "*" in gzip_types, ssi_types, etc
Igor Sysoev <igor@sysoev.ru>
parents: 3368
diff changeset
1705 }
6b8e5c882e47 support "*" in gzip_types, ssi_types, etc
Igor Sysoev <igor@sysoev.ru>
parents: 3368
diff changeset
1706
2138
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1707 if (r->headers_out.content_type.len == 0) {
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1708 return NULL;
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1709 }
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1710
2881
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1711 len = r->headers_out.content_type_len;
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1712
2138
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1713 if (r->headers_out.content_type_lowcase == NULL) {
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1714
2881
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1715 lowcase = ngx_pnalloc(r->pool, len);
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1716 if (lowcase == NULL) {
2138
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1717 return NULL;
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1718 }
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1719
2881
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1720 r->headers_out.content_type_lowcase = lowcase;
2138
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1721
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1722 hash = 0;
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1723
2881
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1724 for (i = 0; i < len; i++) {
2138
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1725 c = ngx_tolower(r->headers_out.content_type.data[i]);
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1726 hash = ngx_hash(hash, c);
2881
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1727 lowcase[i] = c;
2138
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1728 }
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1729
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1730 r->headers_out.content_type_hash = hash;
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1731 }
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1732
2881
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1733 return ngx_hash_find(types_hash, r->headers_out.content_type_hash,
13b63d682228 light optimization of ngx_http_test_content_type()
Igor Sysoev <igor@sysoev.ru>
parents: 2857
diff changeset
1734 r->headers_out.content_type_lowcase, len);
2138
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1735 }
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1736
fb3b084e7d42 test Content-Type via hash:
Igor Sysoev <igor@sysoev.ru>
parents: 2136
diff changeset
1737
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1738 ngx_int_t
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1739 ngx_http_set_content_type(ngx_http_request_t *r)
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1740 {
2136
7a7c9e9024dd ngx_hash_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
1741 u_char c, *exten;
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1742 ngx_str_t *type;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1743 ngx_uint_t i, hash;
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1744 ngx_http_core_loc_conf_t *clcf;
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1745
673
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
1746 if (r->headers_out.content_type.len) {
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
1747 return NGX_OK;
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
1748 }
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
1749
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1750 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1751
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1752 if (r->exten.len) {
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1753
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1754 hash = 0;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1755
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1756 for (i = 0; i < r->exten.len; i++) {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1757 c = r->exten.data[i];
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1758
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1759 if (c >= 'A' && c <= 'Z') {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1760
2136
7a7c9e9024dd ngx_hash_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
1761 exten = ngx_pnalloc(r->pool, r->exten.len);
7a7c9e9024dd ngx_hash_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
1762 if (exten == NULL) {
2536
a6d6d762c554 small optimization: " == NGX_ERROR" > " != NGX_OK"
Igor Sysoev <igor@sysoev.ru>
parents: 2533
diff changeset
1763 return NGX_ERROR;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1764 }
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1765
2136
7a7c9e9024dd ngx_hash_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
1766 hash = ngx_hash_strlow(exten, r->exten.data, r->exten.len);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1767
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1768 r->exten.data = exten;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1769
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1770 break;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1771 }
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1772
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1773 hash = ngx_hash(hash, c);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1774 }
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
1775
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1776 type = ngx_hash_find(&clcf->types_hash, hash,
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1777 r->exten.data, r->exten.len);
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1778
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1779 if (type) {
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
1780 r->headers_out.content_type_len = type->len;
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1781 r->headers_out.content_type = *type;
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
1782
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1783 return NGX_OK;
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1784 }
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1785 }
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1786
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
1787 r->headers_out.content_type_len = clcf->default_type.len;
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1788 r->headers_out.content_type = clcf->default_type;
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1789
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1790 return NGX_OK;
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1791 }
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1792
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
1793
2979
b941147f2b2e ngx_http_set_exten() is always successful since 0.3.46
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
1794 void
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1795 ngx_http_set_exten(ngx_http_request_t *r)
216
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1796 {
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1797 ngx_int_t i;
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1798
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3484
diff changeset
1799 ngx_str_null(&r->exten);
216
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1800
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1801 for (i = r->uri.len - 1; i > 1; i--) {
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1802 if (r->uri.data[i] == '.' && r->uri.data[i - 1] != '/') {
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1803
216
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1804 r->exten.len = r->uri.len - i - 1;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1805 r->exten.data = &r->uri.data[i + 1];
216
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1806
2979
b941147f2b2e ngx_http_set_exten() is always successful since 0.3.46
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
1807 return;
216
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1808
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1809 } else if (r->uri.data[i] == '/') {
2979
b941147f2b2e ngx_http_set_exten() is always successful since 0.3.46
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
1810 return;
216
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1811 }
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1812 }
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1813
2979
b941147f2b2e ngx_http_set_exten() is always successful since 0.3.46
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
1814 return;
216
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1815 }
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1816
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
1817
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1818 ngx_int_t
4748
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1819 ngx_http_set_etag(ngx_http_request_t *r)
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1820 {
4749
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
1821 ngx_table_elt_t *etag;
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
1822 ngx_http_core_loc_conf_t *clcf;
4780
b07931054bf1 Whitespace fix.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4771
diff changeset
1823
4749
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
1824 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
4780
b07931054bf1 Whitespace fix.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4771
diff changeset
1825
4749
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
1826 if (!clcf->etag) {
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
1827 return NGX_OK;
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
1828 }
4748
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1829
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1830 etag = ngx_list_push(&r->headers_out.headers);
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1831 if (etag == NULL) {
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1832 return NGX_ERROR;
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1833 }
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1834
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1835 etag->hash = 1;
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1836 ngx_str_set(&etag->key, "ETag");
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1837
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1838 etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3);
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1839 if (etag->value.data == NULL) {
5825
51fe42cc7876 Fixed ETag memory allocation error handling.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5757
diff changeset
1840 etag->hash = 0;
4748
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1841 return NGX_ERROR;
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1842 }
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1843
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1844 etag->value.len = ngx_sprintf(etag->value.data, "\"%xT-%xO\"",
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1845 r->headers_out.last_modified_time,
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1846 r->headers_out.content_length_n)
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1847 - etag->value.data;
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1848
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1849 r->headers_out.etag = etag;
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1850
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1851 return NGX_OK;
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1852 }
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1853
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1854
5733
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1855 void
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1856 ngx_http_weak_etag(ngx_http_request_t *r)
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1857 {
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1858 size_t len;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1859 u_char *p;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1860 ngx_table_elt_t *etag;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1861
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1862 etag = r->headers_out.etag;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1863
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1864 if (etag == NULL) {
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1865 return;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1866 }
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1867
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1868 if (etag->value.len > 2
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1869 && etag->value.data[0] == 'W'
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1870 && etag->value.data[1] == '/')
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1871 {
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1872 return;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1873 }
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1874
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1875 if (etag->value.len < 1 || etag->value.data[0] != '"') {
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1876 r->headers_out.etag->hash = 0;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1877 r->headers_out.etag = NULL;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1878 return;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1879 }
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1880
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1881 p = ngx_pnalloc(r->pool, etag->value.len + 2);
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1882 if (p == NULL) {
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1883 r->headers_out.etag->hash = 0;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1884 r->headers_out.etag = NULL;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1885 return;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1886 }
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1887
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1888 len = ngx_sprintf(p, "W/%V", &etag->value) - p;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1889
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1890 etag->value.data = p;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1891 etag->value.len = len;
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1892 }
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1893
e491b26fa5a1 Entity tags: downgrade strong etags to weak ones as needed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5715
diff changeset
1894
4748
192f54280a7a Entity tags: set for static respones.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4736
diff changeset
1895 ngx_int_t
3632
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1896 ngx_http_send_response(ngx_http_request_t *r, ngx_uint_t status,
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1897 ngx_str_t *ct, ngx_http_complex_value_t *cv)
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1898 {
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1899 ngx_int_t rc;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1900 ngx_str_t val;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1901 ngx_buf_t *b;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1902 ngx_chain_t out;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1903
4148
18f1cb12c6d7 Fix for "return 202" not discarding body.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
1904 if (ngx_http_discard_request_body(r) != NGX_OK) {
18f1cb12c6d7 Fix for "return 202" not discarding body.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
1905 return NGX_HTTP_INTERNAL_SERVER_ERROR;
18f1cb12c6d7 Fix for "return 202" not discarding body.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
1906 }
18f1cb12c6d7 Fix for "return 202" not discarding body.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
1907
3632
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1908 r->headers_out.status = status;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1909
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1910 if (ngx_http_complex_value(r, cv, &val) != NGX_OK) {
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1911 return NGX_HTTP_INTERNAL_SERVER_ERROR;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1912 }
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1913
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4477
diff changeset
1914 if (status == NGX_HTTP_MOVED_PERMANENTLY
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4477
diff changeset
1915 || status == NGX_HTTP_MOVED_TEMPORARILY
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4477
diff changeset
1916 || status == NGX_HTTP_SEE_OTHER
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4477
diff changeset
1917 || status == NGX_HTTP_TEMPORARY_REDIRECT)
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4477
diff changeset
1918 {
4206
1a94a56a4e5d Clear old Location header (if any) while adding a new one.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4204
diff changeset
1919 ngx_http_clear_location(r);
1a94a56a4e5d Clear old Location header (if any) while adding a new one.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4204
diff changeset
1920
3632
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1921 r->headers_out.location = ngx_list_push(&r->headers_out.headers);
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1922 if (r->headers_out.location == NULL) {
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1923 return NGX_HTTP_INTERNAL_SERVER_ERROR;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1924 }
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1925
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1926 r->headers_out.location->hash = 1;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1927 ngx_str_set(&r->headers_out.location->key, "Location");
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1928 r->headers_out.location->value = val;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1929
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1930 return status;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1931 }
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1932
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1933 r->headers_out.content_length_n = val.len;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1934
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1935 if (ct) {
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1936 r->headers_out.content_type_len = ct->len;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1937 r->headers_out.content_type = *ct;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1938
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1939 } else {
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1940 if (ngx_http_set_content_type(r) != NGX_OK) {
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1941 return NGX_HTTP_INTERNAL_SERVER_ERROR;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1942 }
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1943 }
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1944
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1945 if (r->method == NGX_HTTP_HEAD || (r != r->main && val.len == 0)) {
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1946 return ngx_http_send_header(r);
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1947 }
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1948
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1949 b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1950 if (b == NULL) {
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1951 return NGX_HTTP_INTERNAL_SERVER_ERROR;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1952 }
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1953
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1954 b->pos = val.data;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1955 b->last = val.data + val.len;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1956 b->memory = val.len ? 1 : 0;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1957 b->last_buf = (r == r->main) ? 1 : 0;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1958 b->last_in_chain = 1;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1959
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1960 out.buf = b;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1961 out.next = NULL;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1962
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1963 rc = ngx_http_send_header(r);
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1964
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1965 if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1966 return rc;
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1967 }
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1968
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1969 return ngx_http_output_filter(r, &out);
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1970 }
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1971
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1972
920919d9148c ngx_http_send_response()
Igor Sysoev <igor@sysoev.ru>
parents: 3615
diff changeset
1973 ngx_int_t
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1974 ngx_http_send_header(ngx_http_request_t *r)
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1975 {
5334
03ff14058272 Added safety belt for the case of sending header twice.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5330
diff changeset
1976 if (r->header_sent) {
03ff14058272 Added safety belt for the case of sending header twice.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5330
diff changeset
1977 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
03ff14058272 Added safety belt for the case of sending header twice.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5330
diff changeset
1978 "header already sent");
03ff14058272 Added safety belt for the case of sending header twice.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5330
diff changeset
1979 return NGX_ERROR;
03ff14058272 Added safety belt for the case of sending header twice.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5330
diff changeset
1980 }
03ff14058272 Added safety belt for the case of sending header twice.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5330
diff changeset
1981
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1982 if (r->err_status) {
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1983 r->headers_out.status = r->err_status;
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1984 r->headers_out.status_line.len = 0;
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1985 }
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1986
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1987 return ngx_http_top_header_filter(r);
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1988 }
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1989
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1990
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1991 ngx_int_t
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1992 ngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *in)
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
1993 {
2820
5eb4e2d2e9fa test already destroyed request
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
1994 ngx_int_t rc;
5eb4e2d2e9fa test already destroyed request
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
1995 ngx_connection_t *c;
5eb4e2d2e9fa test already destroyed request
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
1996
5eb4e2d2e9fa test already destroyed request
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
1997 c = r->connection;
5eb4e2d2e9fa test already destroyed request
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
1998
5eb4e2d2e9fa test already destroyed request
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
1999 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2000 "http output filter \"%V?%V\"", &r->uri, &r->args);
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2001
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2002 rc = ngx_http_top_body_filter(r, in);
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2003
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2004 if (rc == NGX_ERROR) {
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2005 /* NGX_ERROR may be returned by any filter */
2820
5eb4e2d2e9fa test already destroyed request
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
2006 c->error = 1;
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2007 }
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2008
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2009 return rc;
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2010 }
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2011
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2012
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2013 u_char *
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2014 ngx_http_map_uri_to_path(ngx_http_request_t *r, ngx_str_t *path,
773
c3ebeee31026 remove r->root_length
Igor Sysoev <igor@sysoev.ru>
parents: 772
diff changeset
2015 size_t *root_length, size_t reserved)
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2016 {
623
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
2017 u_char *last;
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
2018 size_t alias;
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
2019 ngx_http_core_loc_conf_t *clcf;
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2020
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2021 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2022
3535
abb3901be800 fix handling an inherited alias in inclusive location
Igor Sysoev <igor@sysoev.ru>
parents: 3534
diff changeset
2023 alias = clcf->alias;
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2024
603
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
2025 if (alias && !r->valid_location) {
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
2026 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
2027 "\"alias\" cannot be used in location \"%V\" "
603
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
2028 "where URI was rewritten", &clcf->name);
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
2029 return NULL;
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
2030 }
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
2031
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2032 if (clcf->root_lengths == NULL) {
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2033
773
c3ebeee31026 remove r->root_length
Igor Sysoev <igor@sysoev.ru>
parents: 772
diff changeset
2034 *root_length = clcf->root.len;
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2035
2565
456e453eb84a fix reserved mapped uri length if alias has captures
Igor Sysoev <igor@sysoev.ru>
parents: 2564
diff changeset
2036 path->len = clcf->root.len + reserved + r->uri.len - alias + 1;
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2037
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2043
diff changeset
2038 path->data = ngx_pnalloc(r->pool, path->len);
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2039 if (path->data == NULL) {
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2040 return NULL;
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2041 }
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2042
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2043 last = ngx_copy(path->data, clcf->root.data, clcf->root.len);
623
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
2044
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
2045 } else {
2607
cb96a60c8f10 fix alias with variables, but without captures,
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2046
5697
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
2047 if (alias == NGX_MAX_SIZE_T_VALUE) {
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
2048 reserved += r->add_uri_to_alias ? r->uri.len + 1 : 1;
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
2049
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
2050 } else {
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
2051 reserved += r->uri.len - alias + 1;
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
2052 }
2572
9c42c19f364a reserve space for r->uri, the bug has been introduced in r2566
Igor Sysoev <igor@sysoev.ru>
parents: 2566
diff changeset
2053
9c42c19f364a reserve space for r->uri, the bug has been introduced in r2566
Igor Sysoev <igor@sysoev.ru>
parents: 2566
diff changeset
2054 if (ngx_http_script_run(r, path, clcf->root_lengths->elts, reserved,
671
cec32b3753ac nginx-0.3.57-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
2055 clcf->root_values->elts)
667
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
2056 == NULL)
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
2057 {
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
2058 return NULL;
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
2059 }
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
2060
5316
12dd27b74117 Fixed memory leaks in the root and auth_basic_user_file directives.
Valentin Bartenev <vbart@nginx.com>
parents: 5266
diff changeset
2061 if (ngx_get_full_name(r->pool, (ngx_str_t *) &ngx_cycle->prefix, path)
12dd27b74117 Fixed memory leaks in the root and auth_basic_user_file directives.
Valentin Bartenev <vbart@nginx.com>
parents: 5266
diff changeset
2062 != NGX_OK)
12dd27b74117 Fixed memory leaks in the root and auth_basic_user_file directives.
Valentin Bartenev <vbart@nginx.com>
parents: 5266
diff changeset
2063 {
623
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
2064 return NULL;
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
2065 }
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
2066
773
c3ebeee31026 remove r->root_length
Igor Sysoev <igor@sysoev.ru>
parents: 772
diff changeset
2067 *root_length = path->len - reserved;
c3ebeee31026 remove r->root_length
Igor Sysoev <igor@sysoev.ru>
parents: 772
diff changeset
2068 last = path->data + *root_length;
2548
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
2069
5697
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
2070 if (alias == NGX_MAX_SIZE_T_VALUE) {
3534
3711bb1336c3 fix a try_files/alias case when alias uses captures and
Igor Sysoev <igor@sysoev.ru>
parents: 3533
diff changeset
2071 if (!r->add_uri_to_alias) {
3711bb1336c3 fix a try_files/alias case when alias uses captures and
Igor Sysoev <igor@sysoev.ru>
parents: 3533
diff changeset
2072 *last = '\0';
3711bb1336c3 fix a try_files/alias case when alias uses captures and
Igor Sysoev <igor@sysoev.ru>
parents: 3533
diff changeset
2073 return last;
3711bb1336c3 fix a try_files/alias case when alias uses captures and
Igor Sysoev <igor@sysoev.ru>
parents: 3533
diff changeset
2074 }
3711bb1336c3 fix a try_files/alias case when alias uses captures and
Igor Sysoev <igor@sysoev.ru>
parents: 3533
diff changeset
2075
3711bb1336c3 fix a try_files/alias case when alias uses captures and
Igor Sysoev <igor@sysoev.ru>
parents: 3533
diff changeset
2076 alias = 0;
2548
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
2077 }
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2078 }
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
2079
623
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
2080 last = ngx_cpystrn(last, r->uri.data + alias, r->uri.len - alias + 1);
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2081
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2082 return last;
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2083 }
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2084
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2085
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 555
diff changeset
2086 ngx_int_t
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2087 ngx_http_auth_basic_user(ngx_http_request_t *r)
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2088 {
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2089 ngx_str_t auth, encoded;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2090 ngx_uint_t len;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2091
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2092 if (r->headers_in.user.len == 0 && r->headers_in.user.data != NULL) {
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2093 return NGX_DECLINED;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2094 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2095
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2096 if (r->headers_in.authorization == NULL) {
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2097 r->headers_in.user.data = (u_char *) "";
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2098 return NGX_DECLINED;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2099 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2100
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2101 encoded = r->headers_in.authorization->value;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2102
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2103 if (encoded.len < sizeof("Basic ") - 1
1107
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
2104 || ngx_strncasecmp(encoded.data, (u_char *) "Basic ",
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
2105 sizeof("Basic ") - 1)
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
2106 != 0)
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2107 {
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2108 r->headers_in.user.data = (u_char *) "";
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2109 return NGX_DECLINED;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2110 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2111
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2112 encoded.len -= sizeof("Basic ") - 1;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2113 encoded.data += sizeof("Basic ") - 1;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2114
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2115 while (encoded.len && encoded.data[0] == ' ') {
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2116 encoded.len--;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2117 encoded.data++;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2118 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2119
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2120 if (encoded.len == 0) {
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2121 r->headers_in.user.data = (u_char *) "";
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2122 return NGX_DECLINED;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2123 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
2124
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2125 auth.len = ngx_base64_decoded_length(encoded.len);
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2043
diff changeset
2126 auth.data = ngx_pnalloc(r->pool, auth.len + 1);
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2127 if (auth.data == NULL) {
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2128 return NGX_ERROR;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2129 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2130
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2131 if (ngx_decode_base64(&auth, &encoded) != NGX_OK) {
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2132 r->headers_in.user.data = (u_char *) "";
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2133 return NGX_DECLINED;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2134 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
2135
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2136 auth.data[auth.len] = '\0';
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
2137
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
2138 for (len = 0; len < auth.len; len++) {
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2139 if (auth.data[len] == ':') {
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2140 break;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2141 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2142 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
2143
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
2144 if (len == 0 || len == auth.len) {
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2145 r->headers_in.user.data = (u_char *) "";
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2146 return NGX_DECLINED;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2147 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2148
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2149 r->headers_in.user.len = len;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2150 r->headers_in.user.data = auth.data;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2151 r->headers_in.passwd.len = auth.len - len - 1;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2152 r->headers_in.passwd.data = &auth.data[len + 1];
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2153
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2154 return NGX_OK;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2155 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2156
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2157
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2158 #if (NGX_HTTP_GZIP)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2159
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2160 ngx_int_t
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2161 ngx_http_gzip_ok(ngx_http_request_t *r)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2162 {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2163 time_t date, expires;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2164 ngx_uint_t p;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2165 ngx_array_t *cc;
3979
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2166 ngx_table_elt_t *e, *d, *ae;
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2167 ngx_http_core_loc_conf_t *clcf;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2168
3313
118169a8ec92 refactor gzip_vary handling
Igor Sysoev <igor@sysoev.ru>
parents: 3259
diff changeset
2169 r->gzip_tested = 1;
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2170
3979
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2171 if (r != r->main) {
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2172 return NGX_DECLINED;
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2173 }
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2174
5121
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2175 #if (NGX_HTTP_SPDY)
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2176 if (r->spdy_stream) {
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2177 r->gzip_ok = 1;
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2178 return NGX_OK;
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2179 }
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2180 #endif
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2181
3979
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2182 ae = r->headers_in.accept_encoding;
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2183 if (ae == NULL) {
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2184 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2185 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2186
3982
aab3889c41e9 fix r3981 for case "Accept-Encoding: gzip"
Igor Sysoev <igor@sysoev.ru>
parents: 3980
diff changeset
2187 if (ae->value.len < sizeof("gzip") - 1) {
3979
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2188 return NGX_DECLINED;
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2189 }
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2190
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2191 /*
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2192 * test first for the most common case "gzip,...":
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2193 * MSIE: "gzip, deflate"
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2194 * Firefox: "gzip,deflate"
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2195 * Chrome: "gzip,deflate,sdch"
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2196 * Safari: "gzip, deflate"
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2197 * Opera: "gzip, deflate"
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2198 */
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2199
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2200 if (ngx_memcmp(ae->value.data, "gzip,", 5) != 0
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2201 && ngx_http_gzip_accept_encoding(&ae->value) != NGX_OK)
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2202 {
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2203 return NGX_DECLINED;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2204 }
3979
1d9353fbc077 Accept-Encoding refactoring: test first the most common case "gzip,"
Igor Sysoev <igor@sysoev.ru>
parents: 3978
diff changeset
2205
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2206 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2207
2205
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
2208 if (r->headers_in.msie6 && clcf->gzip_disable_msie6) {
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
2209 return NGX_DECLINED;
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
2210 }
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
2211
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2212 if (r->http_version < clcf->gzip_http_version) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2213 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2214 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2215
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2216 if (r->headers_in.via == NULL) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2217 goto ok;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2218 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2219
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2220 p = clcf->gzip_proxied;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2221
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2222 if (p & NGX_HTTP_GZIP_PROXIED_OFF) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2223 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2224 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2225
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2226 if (p & NGX_HTTP_GZIP_PROXIED_ANY) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2227 goto ok;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2228 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2229
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2230 if (r->headers_in.authorization && (p & NGX_HTTP_GZIP_PROXIED_AUTH)) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2231 goto ok;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2232 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2233
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2234 e = r->headers_out.expires;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2235
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2236 if (e) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2237
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2238 if (!(p & NGX_HTTP_GZIP_PROXIED_EXPIRED)) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2239 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2240 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2241
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2242 expires = ngx_http_parse_time(e->value.data, e->value.len);
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2243 if (expires == NGX_ERROR) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2244 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2245 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2246
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2247 d = r->headers_out.date;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2248
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2249 if (d) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2250 date = ngx_http_parse_time(d->value.data, d->value.len);
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2251 if (date == NGX_ERROR) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2252 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2253 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2254
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2255 } else {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2256 date = ngx_time();
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2257 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2258
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2259 if (expires < date) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2260 goto ok;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2261 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2262
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2263 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2264 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2265
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2266 cc = &r->headers_out.cache_control;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2267
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2268 if (cc->elts) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2269
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2270 if ((p & NGX_HTTP_GZIP_PROXIED_NO_CACHE)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2271 && ngx_http_parse_multi_header_lines(cc, &ngx_http_gzip_no_cache,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2272 NULL)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2273 >= 0)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2274 {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2275 goto ok;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2276 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2277
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2278 if ((p & NGX_HTTP_GZIP_PROXIED_NO_STORE)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2279 && ngx_http_parse_multi_header_lines(cc, &ngx_http_gzip_no_store,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2280 NULL)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2281 >= 0)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2282 {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2283 goto ok;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2284 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2285
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2286 if ((p & NGX_HTTP_GZIP_PROXIED_PRIVATE)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2287 && ngx_http_parse_multi_header_lines(cc, &ngx_http_gzip_private,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2288 NULL)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2289 >= 0)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2290 {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2291 goto ok;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2292 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2293
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2294 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2295 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2296
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2297 if ((p & NGX_HTTP_GZIP_PROXIED_NO_LM) && r->headers_out.last_modified) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2298 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2299 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2300
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2301 if ((p & NGX_HTTP_GZIP_PROXIED_NO_ETAG) && r->headers_out.etag) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2302 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2303 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2304
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2305 ok:
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2306
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2307 #if (NGX_PCRE)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2308
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2309 if (clcf->gzip_disable && r->headers_in.user_agent) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2310
1801
a4cb9c04e7f2 style fix: remove trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 1800
diff changeset
2311 if (ngx_regex_exec_array(clcf->gzip_disable,
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2312 &r->headers_in.user_agent->value,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2313 r->connection->log)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2314 != NGX_DECLINED)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2315 {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2316 return NGX_DECLINED;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2317 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2318 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2319
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2320 #endif
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2321
3313
118169a8ec92 refactor gzip_vary handling
Igor Sysoev <igor@sysoev.ru>
parents: 3259
diff changeset
2322 r->gzip_ok = 1;
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2323
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2324 return NGX_OK;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2325 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2326
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2327
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2328 /*
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2329 * gzip is enabled for the following quantities:
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2330 * "gzip; q=0.001" ... "gzip; q=1.000"
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2331 * gzip is disabled for the following quantities:
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2332 * "gzip; q=0" ... "gzip; q=0.000", and for any invalid cases
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2333 */
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2334
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2335 static ngx_int_t
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2336 ngx_http_gzip_accept_encoding(ngx_str_t *ae)
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2337 {
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2338 u_char *p, *start, *last;
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2339
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2340 start = ae->data;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2341 last = start + ae->len;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2342
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2343 for ( ;; ) {
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2344 p = ngx_strcasestrn(start, "gzip", 4 - 1);
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2345 if (p == NULL) {
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2346 return NGX_DECLINED;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2347 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2348
3986
6c4d2d163611 fix r3981 again for case "Accept-Encoding: gzip"
Igor Sysoev <igor@sysoev.ru>
parents: 3984
diff changeset
2349 if (p == start || (*(p - 1) == ',' || *(p - 1) == ' ')) {
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2350 break;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2351 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2352
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2353 start = p + 4;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2354 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2355
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2356 p += 4;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2357
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2358 while (p < last) {
5757
c5ec6944de98 Style: add whitespace between control statement and parentheses.
Piotr Sikora <piotr@cloudflare.com>
parents: 5733
diff changeset
2359 switch (*p++) {
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2360 case ',':
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2361 return NGX_OK;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2362 case ';':
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2363 goto quantity;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2364 case ' ':
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2365 continue;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2366 default:
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2367 return NGX_DECLINED;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2368 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2369 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2370
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2371 return NGX_OK;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2372
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2373 quantity:
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2374
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2375 while (p < last) {
5757
c5ec6944de98 Style: add whitespace between control statement and parentheses.
Piotr Sikora <piotr@cloudflare.com>
parents: 5733
diff changeset
2376 switch (*p++) {
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2377 case 'q':
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2378 case 'Q':
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2379 goto equal;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2380 case ' ':
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2381 continue;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2382 default:
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2383 return NGX_DECLINED;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2384 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2385 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2386
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2387 return NGX_OK;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2388
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2389 equal:
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2390
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2391 if (p + 2 > last || *p++ != '=') {
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2392 return NGX_DECLINED;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2393 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2394
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2395 if (ngx_http_gzip_quantity(p, last) == 0) {
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2396 return NGX_DECLINED;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2397 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2398
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2399 return NGX_OK;
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2400 }
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2401
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2402
5651
b51bd021808b Fixed missing "static" in declaration of ngx_http_gzip_quantity().
Valentin Bartenev <vbart@nginx.com>
parents: 5637
diff changeset
2403 static ngx_uint_t
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2404 ngx_http_gzip_quantity(u_char *p, u_char *last)
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2405 {
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2406 u_char c;
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2407 ngx_uint_t n, q;
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2408
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2409 c = *p++;
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2410
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2411 if (c != '0' && c != '1') {
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2412 return 0;
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2413 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2414
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2415 q = (c - '0') * 100;
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2416
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2417 if (p == last) {
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2418 return q;
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2419 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2420
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2421 c = *p++;
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2422
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2423 if (c == ',' || c == ' ') {
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2424 return q;
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2425 }
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2426
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2427 if (c != '.') {
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2428 return 0;
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2429 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2430
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2431 n = 0;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2432
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2433 while (p < last) {
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2434 c = *p++;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2435
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2436 if (c == ',' || c == ' ') {
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2437 break;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2438 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2439
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2440 if (c >= '0' && c <= '9') {
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2441 q += c - '0';
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2442 n++;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2443 continue;
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2444 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2445
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2446 return 0;
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2447 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2448
3994
87628d211f9a fix gzip quantity: "q=0." and "q=1." are valid values according to RFC
Igor Sysoev <igor@sysoev.ru>
parents: 3993
diff changeset
2449 if (q > 100 || n > 3) {
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2450 return 0;
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2451 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2452
3993
f77ed914eb1d refactor gzip quantity introduced in r3981: it ignored "q=1.000"
Igor Sysoev <igor@sysoev.ru>
parents: 3990
diff changeset
2453 return q;
3980
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2454 }
19de03b4217f Accept-Encoding refactoring: "gzip; q=0" support
Igor Sysoev <igor@sysoev.ru>
parents: 3979
diff changeset
2455
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2456 #endif
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2457
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
2458
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 535
diff changeset
2459 ngx_int_t
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2460 ngx_http_subrequest(ngx_http_request_t *r,
758
86bb73dc8d40 fix <!--#include virtual=... wait="yes" -->
Igor Sysoev <igor@sysoev.ru>
parents: 716
diff changeset
2461 ngx_str_t *uri, ngx_str_t *args, ngx_http_request_t **psr,
777
4ab852b691f5 <!--#include virtual=... set=... -->
Igor Sysoev <igor@sysoev.ru>
parents: 773
diff changeset
2462 ngx_http_post_subrequest_t *ps, ngx_uint_t flags)
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2463 {
3712
518eeff336c1 fix $request_time for subrequests
Igor Sysoev <igor@sysoev.ru>
parents: 3687
diff changeset
2464 ngx_time_t *tp;
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2465 ngx_connection_t *c;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2466 ngx_http_request_t *sr;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2467 ngx_http_core_srv_conf_t *cscf;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2468 ngx_http_postponed_request_t *pr, *p;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2469
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
2470 r->main->subrequests--;
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
2471
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
2472 if (r->main->subrequests == 0) {
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
2473 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
2474 "subrequests cycle while processing \"%V\"", uri);
838
e61362d2d844 fix subrequest limit
Igor Sysoev <igor@sysoev.ru>
parents: 837
diff changeset
2475 r->main->subrequests = 1;
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
2476 return NGX_ERROR;
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
2477 }
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
2478
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2479 sr = ngx_pcalloc(r->pool, sizeof(ngx_http_request_t));
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2480 if (sr == NULL) {
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 643
diff changeset
2481 return NGX_ERROR;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2482 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2483
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2484 sr->signature = NGX_HTTP_MODULE;
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2485
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2486 c = r->connection;
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2487 sr->connection = c;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2488
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2489 sr->ctx = ngx_pcalloc(r->pool, sizeof(void *) * ngx_http_max_module);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2490 if (sr->ctx == NULL) {
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 643
diff changeset
2491 return NGX_ERROR;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2492 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2493
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2494 if (ngx_list_init(&sr->headers_out.headers, r->pool, 20,
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2495 sizeof(ngx_table_elt_t))
2536
a6d6d762c554 small optimization: " == NGX_ERROR" > " != NGX_OK"
Igor Sysoev <igor@sysoev.ru>
parents: 2533
diff changeset
2496 != NGX_OK)
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2497 {
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 643
diff changeset
2498 return NGX_ERROR;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2499 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2500
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2501 cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2502 sr->main_conf = cscf->ctx->main_conf;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2503 sr->srv_conf = cscf->ctx->srv_conf;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2504 sr->loc_conf = cscf->ctx->loc_conf;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2505
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2506 sr->pool = r->pool;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2507
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2508 sr->headers_in = r->headers_in;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2509
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
2510 ngx_http_clear_content_length(sr);
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
2511 ngx_http_clear_accept_ranges(sr);
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
2512 ngx_http_clear_last_modified(sr);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2513
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2514 sr->request_body = r->request_body;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2515
5121
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2516 #if (NGX_HTTP_SPDY)
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2517 sr->spdy_stream = r->spdy_stream;
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2518 #endif
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
2519
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2520 sr->method = NGX_HTTP_GET;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2521 sr->http_version = r->http_version;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2522
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2523 sr->request_line = r->request_line;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2524 sr->uri = *uri;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
2525
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2526 if (args) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2527 sr->args = *args;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2528 }
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
2529
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2530 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2531 "http subrequest \"%V?%V\"", uri, &sr->args);
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2532
777
4ab852b691f5 <!--#include virtual=... set=... -->
Igor Sysoev <igor@sysoev.ru>
parents: 773
diff changeset
2533 sr->subrequest_in_memory = (flags & NGX_HTTP_SUBREQUEST_IN_MEMORY) != 0;
2377
87b8c44906b5 *) refactor subrequest handling, now they run as separate posted requests
Igor Sysoev <igor@sysoev.ru>
parents: 2361
diff changeset
2534 sr->waited = (flags & NGX_HTTP_SUBREQUEST_WAITED) != 0;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 569
diff changeset
2535
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2536 sr->unparsed_uri = r->unparsed_uri;
1857
18c20c38ad6d update GET method text in an subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 1811
diff changeset
2537 sr->method_name = ngx_http_core_get_method;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2538 sr->http_protocol = r->http_protocol;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2539
2979
b941147f2b2e ngx_http_set_exten() is always successful since 0.3.46
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
2540 ngx_http_set_exten(sr);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2541
553
45033d85b30e nginx-0.2.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
2542 sr->main = r->main;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2543 sr->parent = r;
777
4ab852b691f5 <!--#include virtual=... set=... -->
Igor Sysoev <igor@sysoev.ru>
parents: 773
diff changeset
2544 sr->post_subrequest = ps;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2545 sr->read_event_handler = ngx_http_request_empty_handler;
2377
87b8c44906b5 *) refactor subrequest handling, now they run as separate posted requests
Igor Sysoev <igor@sysoev.ru>
parents: 2361
diff changeset
2546 sr->write_event_handler = ngx_http_handler;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2547
2423
5bdb1591d37f update r2422
Igor Sysoev <igor@sysoev.ru>
parents: 2421
diff changeset
2548 if (c->data == r && r->postponed == NULL) {
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2549 c->data = sr;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2550 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2551
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2552 sr->variables = r->variables;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2553
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2554 sr->log_handler = r->log_handler;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2555
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2556 pr = ngx_palloc(r->pool, sizeof(ngx_http_postponed_request_t));
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2557 if (pr == NULL) {
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 643
diff changeset
2558 return NGX_ERROR;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2559 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2560
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2561 pr->request = sr;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2562 pr->out = NULL;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2563 pr->next = NULL;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2564
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2565 if (r->postponed) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2566 for (p = r->postponed; p->next; p = p->next) { /* void */ }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2567 p->next = pr;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2568
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2569 } else {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2570 r->postponed = pr;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2571 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2572
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2573 sr->internal = 1;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2574
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
2575 sr->discard_body = r->discard_body;
2436
26d9d4a41e91 send "100 Continue" just before reading request body
Igor Sysoev <igor@sysoev.ru>
parents: 2435
diff changeset
2576 sr->expect_tested = 1;
513
fbbf16224844 nginx-0.1.31-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 511
diff changeset
2577 sr->main_filter_need_in_memory = r->main_filter_need_in_memory;
fbbf16224844 nginx-0.1.31-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 511
diff changeset
2578
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
2579 sr->uri_changes = NGX_HTTP_MAX_URI_CHANGES + 1;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
2580
3712
518eeff336c1 fix $request_time for subrequests
Igor Sysoev <igor@sysoev.ru>
parents: 3687
diff changeset
2581 tp = ngx_timeofday();
3897
1df827cf70c0 fix r3713
Igor Sysoev <igor@sysoev.ru>
parents: 3887
diff changeset
2582 sr->start_sec = tp->sec;
1df827cf70c0 fix r3713
Igor Sysoev <igor@sysoev.ru>
parents: 3887
diff changeset
2583 sr->start_msec = tp->msec;
3712
518eeff336c1 fix $request_time for subrequests
Igor Sysoev <igor@sysoev.ru>
parents: 3687
diff changeset
2584
3049
67254117b774 request reference counter
Igor Sysoev <igor@sysoev.ru>
parents: 2981
diff changeset
2585 r->main->count++;
2377
87b8c44906b5 *) refactor subrequest handling, now they run as separate posted requests
Igor Sysoev <igor@sysoev.ru>
parents: 2361
diff changeset
2586
87b8c44906b5 *) refactor subrequest handling, now they run as separate posted requests
Igor Sysoev <igor@sysoev.ru>
parents: 2361
diff changeset
2587 *psr = sr;
87b8c44906b5 *) refactor subrequest handling, now they run as separate posted requests
Igor Sysoev <igor@sysoev.ru>
parents: 2361
diff changeset
2588
3064
23e6f26fb4bd *) ngx_http_ephemeral
Igor Sysoev <igor@sysoev.ru>
parents: 3053
diff changeset
2589 return ngx_http_post_request(sr, NULL);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2590 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2591
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2592
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2593 ngx_int_t
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2594 ngx_http_internal_redirect(ngx_http_request_t *r,
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2595 ngx_str_t *uri, ngx_str_t *args)
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
2596 {
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2597 ngx_http_core_srv_conf_t *cscf;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2598
677
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
2599 r->uri_changes--;
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
2600
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
2601 if (r->uri_changes == 0) {
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
2602 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
2603 "rewrite or internal redirection cycle "
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
2604 "while internally redirecting to \"%V\"", uri);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
2605
3114
1c4fcfe57af1 fix request counter for rewrite or internal redirection cycle,
Igor Sysoev <igor@sysoev.ru>
parents: 3078
diff changeset
2606 r->main->count++;
677
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
2607 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
2608 return NGX_DONE;
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
2609 }
921a7ce4baf4 nginx-0.3.60-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 675
diff changeset
2610
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
2611 r->uri = *uri;
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
2612
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
2613 if (args) {
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
2614 r->args = *args;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2615
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2616 } else {
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3484
diff changeset
2617 ngx_str_null(&r->args);
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
2618 }
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
2619
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2620 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2621 "internal redirect: \"%V?%V\"", uri, &r->args);
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
2622
2979
b941147f2b2e ngx_http_set_exten() is always successful since 0.3.46
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
2623 ngx_http_set_exten(r);
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
2624
675
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 673
diff changeset
2625 /* clear the modules contexts */
e924670896ab nginx-0.3.59-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 673
diff changeset
2626 ngx_memzero(r->ctx, sizeof(void *) * ngx_http_max_module);
144
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
2627
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2628 cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2629 r->loc_conf = cscf->ctx->loc_conf;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2630
535
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
2631 ngx_http_update_location_config(r);
563ad09abf50 nginx-0.1.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 531
diff changeset
2632
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
2633 #if (NGX_HTTP_CACHE)
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
2634 r->cache = NULL;
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
2635 #endif
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
2636
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2637 r->internal = 1;
4375
f31146f282fd Added clearing of r->valid_unparsed_uri on internal redirects.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4325
diff changeset
2638 r->valid_unparsed_uri = 0;
3534
3711bb1336c3 fix a try_files/alias case when alias uses captures and
Igor Sysoev <igor@sysoev.ru>
parents: 3533
diff changeset
2639 r->add_uri_to_alias = 0;
3049
67254117b774 request reference counter
Igor Sysoev <igor@sysoev.ru>
parents: 2981
diff changeset
2640 r->main->count++;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
2641
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
2642 ngx_http_handler(r);
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
2643
152
fb48bf4fea1c nginx-0.0.1-2003-10-21-11:47:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 148
diff changeset
2644 return NGX_DONE;
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
2645 }
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
2646
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
2647
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2648 ngx_int_t
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2649 ngx_http_named_location(ngx_http_request_t *r, ngx_str_t *name)
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2650 {
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2651 ngx_http_core_srv_conf_t *cscf;
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2652 ngx_http_core_loc_conf_t **clcfp;
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2653 ngx_http_core_main_conf_t *cmcf;
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2654
3049
67254117b774 request reference counter
Igor Sysoev <igor@sysoev.ru>
parents: 2981
diff changeset
2655 r->main->count++;
4472
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2656 r->uri_changes--;
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2657
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2658 if (r->uri_changes == 0) {
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2659 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2660 "rewrite or internal redirection cycle "
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2661 "while redirect to named location \"%V\"", name);
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2662
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2663 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2664 return NGX_DONE;
c95b828912a3 Core: protection from cycles with named locations and post_action.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4471
diff changeset
2665 }
3049
67254117b774 request reference counter
Igor Sysoev <igor@sysoev.ru>
parents: 2981
diff changeset
2666
5584
0251f2f1dc93 Disabled redirects to named locations if URI is not set.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5456
diff changeset
2667 if (r->uri.len == 0) {
0251f2f1dc93 Disabled redirects to named locations if URI is not set.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5456
diff changeset
2668 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
0251f2f1dc93 Disabled redirects to named locations if URI is not set.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5456
diff changeset
2669 "empty URI in redirect to named location \"%V\"", name);
0251f2f1dc93 Disabled redirects to named locations if URI is not set.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5456
diff changeset
2670
0251f2f1dc93 Disabled redirects to named locations if URI is not set.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5456
diff changeset
2671 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
0251f2f1dc93 Disabled redirects to named locations if URI is not set.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5456
diff changeset
2672 return NGX_DONE;
0251f2f1dc93 Disabled redirects to named locations if URI is not set.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5456
diff changeset
2673 }
0251f2f1dc93 Disabled redirects to named locations if URI is not set.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5456
diff changeset
2674
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2675 cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2676
2404
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2677 if (cscf->named_locations) {
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2678
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2679 for (clcfp = cscf->named_locations; *clcfp; clcfp++) {
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2680
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2681 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2682 "test location: \"%V\"", &(*clcfp)->name);
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2683
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2684 if (name->len != (*clcfp)->name.len
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2685 || ngx_strncmp(name->data, (*clcfp)->name.data, name->len) != 0)
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2686 {
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2687 continue;
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2688 }
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2689
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2690 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2691 "using location: %V \"%V?%V\"",
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2692 name, &r->uri, &r->args);
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2693
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2694 r->internal = 1;
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2695 r->content_handler = NULL;
4736
cebbe4fda8aa Reset r->uri_changed in a named location (ticket #184).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4636
diff changeset
2696 r->uri_changed = 0;
2404
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2697 r->loc_conf = (*clcfp)->loc_conf;
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2698
4210
c8f6248566aa Added clearing of modules' contexts in ngx_http_named_location().
Maxim Dounin <mdounin@mdounin.ru>
parents: 4206
diff changeset
2699 /* clear the modules contexts */
c8f6248566aa Added clearing of modules' contexts in ngx_http_named_location().
Maxim Dounin <mdounin@mdounin.ru>
parents: 4206
diff changeset
2700 ngx_memzero(r->ctx, sizeof(void *) * ngx_http_max_module);
c8f6248566aa Added clearing of modules' contexts in ngx_http_named_location().
Maxim Dounin <mdounin@mdounin.ru>
parents: 4206
diff changeset
2701
2404
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2702 ngx_http_update_location_config(r);
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2703
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2704 cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2705
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2706 r->phase_handler = cmcf->phase_engine.location_rewrite_index;
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2707
4614
347a54b2cb14 Added write event handler reset in ngx_http_named_location().
Maxim Dounin <mdounin@mdounin.ru>
parents: 4600
diff changeset
2708 r->write_event_handler = ngx_http_core_run_phases;
2404
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2709 ngx_http_core_run_phases(r);
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2710
dca164c4a868 fix segfault if no named location are defined, but are used
Igor Sysoev <igor@sysoev.ru>
parents: 2400
diff changeset
2711 return NGX_DONE;
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2712 }
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2713 }
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2714
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2715 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
1591
135202406b0c fix typo
Igor Sysoev <igor@sysoev.ru>
parents: 1586
diff changeset
2716 "could not find named location \"%V\"", name);
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2717
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2718 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
2719
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2720 return NGX_DONE;
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2721 }
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2722
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
2723
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2724 ngx_http_cleanup_t *
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2725 ngx_http_cleanup_add(ngx_http_request_t *r, size_t size)
144
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
2726 {
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2727 ngx_http_cleanup_t *cln;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2728
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2729 r = r->main;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2730
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2731 cln = ngx_palloc(r->pool, sizeof(ngx_http_cleanup_t));
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2732 if (cln == NULL) {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2733 return NULL;
144
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
2734 }
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
2735
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2736 if (size) {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2737 cln->data = ngx_palloc(r->pool, size);
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2738 if (cln->data == NULL) {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2739 return NULL;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2740 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2741
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2742 } else {
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2743 cln->data = NULL;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2744 }
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2745
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2746 cln->handler = NULL;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2747 cln->next = r->cleanup;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2748
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2749 r->cleanup = cln;
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2750
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2751 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2752 "http cleanup add: %p", cln);
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2753
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
2754 return cln;
144
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
2755 }
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
2756
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 143
diff changeset
2757
4494
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2758 ngx_int_t
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2759 ngx_http_set_disable_symlinks(ngx_http_request_t *r,
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2760 ngx_http_core_loc_conf_t *clcf, ngx_str_t *path, ngx_open_file_info_t *of)
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2761 {
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2762 #if (NGX_HAVE_OPENAT)
4495
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2763 u_char *p;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2764 ngx_str_t from;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2765
4494
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2766 of->disable_symlinks = clcf->disable_symlinks;
4495
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2767
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2768 if (clcf->disable_symlinks_from == NULL) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2769 return NGX_OK;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2770 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2771
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2772 if (ngx_http_complex_value(r, clcf->disable_symlinks_from, &from)
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2773 != NGX_OK)
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2774 {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2775 return NGX_ERROR;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2776 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2777
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2778 if (from.len == 0
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2779 || from.len > path->len
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2780 || ngx_memcmp(path->data, from.data, from.len) != 0)
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2781 {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2782 return NGX_OK;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2783 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2784
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2785 if (from.len == path->len) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2786 of->disable_symlinks = NGX_DISABLE_SYMLINKS_OFF;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2787 return NGX_OK;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2788 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2789
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2790 p = path->data + from.len;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2791
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2792 if (*p == '/') {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2793 of->disable_symlinks_from = from.len;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2794 return NGX_OK;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2795 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2796
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2797 p--;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2798
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2799 if (*p == '/') {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2800 of->disable_symlinks_from = from.len - 1;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
2801 }
4494
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2802 #endif
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2803
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2804 return NGX_OK;
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2805 }
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2806
13e09cf11d4e Disable symlinks: initialization of the "disable_symlinks" field in
Valentin Bartenev <vbart@nginx.com>
parents: 4491
diff changeset
2807
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2808 ngx_int_t
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2809 ngx_http_get_forwarded_addr(ngx_http_request_t *r, ngx_addr_t *addr,
5084
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2810 ngx_array_t *headers, ngx_str_t *value, ngx_array_t *proxies,
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2811 int recursive)
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2812 {
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2813 ngx_int_t rc;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2814 ngx_uint_t i, found;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2815 ngx_table_elt_t **h;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2816
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2817 if (headers == NULL) {
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2818 return ngx_http_get_forwarded_addr_internal(r, addr, value->data,
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2819 value->len, proxies,
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2820 recursive);
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2821 }
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2822
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2823 i = headers->nelts;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2824 h = headers->elts;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2825
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2826 rc = NGX_DECLINED;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2827
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2828 found = 0;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2829
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2830 while (i-- > 0) {
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2831 rc = ngx_http_get_forwarded_addr_internal(r, addr, h[i]->value.data,
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2832 h[i]->value.len, proxies,
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2833 recursive);
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2834
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2835 if (!recursive) {
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2836 break;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2837 }
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2838
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2839 if (rc == NGX_DECLINED && found) {
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2840 rc = NGX_DONE;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2841 break;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2842 }
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2843
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2844 if (rc != NGX_OK) {
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2845 break;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2846 }
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2847
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2848 found = 1;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2849 }
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2850
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2851 return rc;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2852 }
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2853
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2854
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2855 static ngx_int_t
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2856 ngx_http_get_forwarded_addr_internal(ngx_http_request_t *r, ngx_addr_t *addr,
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2857 u_char *xff, size_t xfflen, ngx_array_t *proxies, int recursive)
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2858 {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2859 u_char *p;
4630
f39138a69e0a Fixed win32 build after changes in r4624.
Ruslan Ermilov <ru@nginx.com>
parents: 4628
diff changeset
2860 in_addr_t inaddr;
5084
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2861 ngx_int_t rc;
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2862 ngx_addr_t paddr;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2863 ngx_cidr_t *cidr;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2864 ngx_uint_t family, i;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2865 #if (NGX_HAVE_INET6)
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2866 ngx_uint_t n;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2867 struct in6_addr *inaddr6;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2868 #endif
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2869
4628
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2870 #if (NGX_SUPPRESS_WARN)
4630
f39138a69e0a Fixed win32 build after changes in r4624.
Ruslan Ermilov <ru@nginx.com>
parents: 4628
diff changeset
2871 inaddr = 0;
4628
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2872 #if (NGX_HAVE_INET6)
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2873 inaddr6 = NULL;
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2874 #endif
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2875 #endif
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2876
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2877 family = addr->sockaddr->sa_family;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2878
4628
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2879 if (family == AF_INET) {
4630
f39138a69e0a Fixed win32 build after changes in r4624.
Ruslan Ermilov <ru@nginx.com>
parents: 4628
diff changeset
2880 inaddr = ((struct sockaddr_in *) addr->sockaddr)->sin_addr.s_addr;
4628
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2881 }
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2882
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2883 #if (NGX_HAVE_INET6)
4628
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2884 else if (family == AF_INET6) {
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2885 inaddr6 = &((struct sockaddr_in6 *) addr->sockaddr)->sin6_addr;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2886
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2887 if (IN6_IS_ADDR_V4MAPPED(inaddr6)) {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2888 family = AF_INET;
4828
f57154322e0e Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
Ruslan Ermilov <ru@nginx.com>
parents: 4827
diff changeset
2889
f57154322e0e Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
Ruslan Ermilov <ru@nginx.com>
parents: 4827
diff changeset
2890 p = inaddr6->s6_addr;
f57154322e0e Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
Ruslan Ermilov <ru@nginx.com>
parents: 4827
diff changeset
2891
f57154322e0e Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
Ruslan Ermilov <ru@nginx.com>
parents: 4827
diff changeset
2892 inaddr = p[12] << 24;
f57154322e0e Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
Ruslan Ermilov <ru@nginx.com>
parents: 4827
diff changeset
2893 inaddr += p[13] << 16;
f57154322e0e Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
Ruslan Ermilov <ru@nginx.com>
parents: 4827
diff changeset
2894 inaddr += p[14] << 8;
f57154322e0e Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
Ruslan Ermilov <ru@nginx.com>
parents: 4827
diff changeset
2895 inaddr += p[15];
f57154322e0e Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
Ruslan Ermilov <ru@nginx.com>
parents: 4827
diff changeset
2896
f57154322e0e Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
Ruslan Ermilov <ru@nginx.com>
parents: 4827
diff changeset
2897 inaddr = htonl(inaddr);
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2898 }
4628
f675474435e0 Reverted previous attempt to fix complation warning introduced in
Ruslan Ermilov <ru@nginx.com>
parents: 4625
diff changeset
2899 }
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2900 #endif
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2901
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2902 for (cidr = proxies->elts, i = 0; i < proxies->nelts; i++) {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2903 if (cidr[i].family != family) {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2904 goto next;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2905 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2906
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2907 switch (family) {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2908
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2909 #if (NGX_HAVE_INET6)
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2910 case AF_INET6:
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2911 for (n = 0; n < 16; n++) {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2912 if ((inaddr6->s6_addr[n] & cidr[i].u.in6.mask.s6_addr[n])
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2913 != cidr[i].u.in6.addr.s6_addr[n])
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2914 {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2915 goto next;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2916 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2917 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2918 break;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2919 #endif
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2920
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2921 #if (NGX_HAVE_UNIX_DOMAIN)
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2922 case AF_UNIX:
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2923 break;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2924 #endif
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2925
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2926 default: /* AF_INET */
4630
f39138a69e0a Fixed win32 build after changes in r4624.
Ruslan Ermilov <ru@nginx.com>
parents: 4628
diff changeset
2927 if ((inaddr & cidr[i].u.in.mask) != cidr[i].u.in.addr) {
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2928 goto next;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2929 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2930 break;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2931 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2932
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2933 for (p = xff + xfflen - 1; p > xff; p--, xfflen--) {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2934 if (*p != ' ' && *p != ',') {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2935 break;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2936 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2937 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2938
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2939 for ( /* void */ ; p > xff; p--) {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2940 if (*p == ' ' || *p == ',') {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2941 p++;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2942 break;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2943 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2944 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2945
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2946 if (ngx_parse_addr(r->pool, &paddr, p, xfflen - (p - xff)) != NGX_OK) {
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2947 return NGX_DECLINED;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2948 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2949
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2950 *addr = paddr;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2951
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2952 if (recursive && p > xff) {
5084
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2953 rc = ngx_http_get_forwarded_addr_internal(r, addr, xff, p - 1 - xff,
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2954 proxies, 1);
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2955
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2956 if (rc == NGX_DECLINED) {
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2957 return NGX_DONE;
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2958 }
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2959
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2960 /* rc == NGX_OK || rc == NGX_DONE */
f7fe817c92a2 Correctly handle multiple X-Forwarded-For headers (ticket #106).
Ruslan Ermilov <ru@nginx.com>
parents: 4973
diff changeset
2961 return rc;
4623
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2962 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2963
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2964 return NGX_OK;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2965
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2966 next:
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2967 continue;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2968 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2969
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2970 return NGX_DECLINED;
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2971 }
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2972
ed3d0cc6de5a New function ngx_http_get_forwarded_addr() to look up real client address.
Ruslan Ermilov <ru@nginx.com>
parents: 4614
diff changeset
2973
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2974 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2975 ngx_http_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy)
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
2976 {
1235
f8a40ccafb04 optimize regex location search
Igor Sysoev <igor@sysoev.ru>
parents: 1234
diff changeset
2977 char *rv;
f8a40ccafb04 optimize regex location search
Igor Sysoev <igor@sysoev.ru>
parents: 1234
diff changeset
2978 void *mconf;
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
2979 ngx_uint_t i;
1235
f8a40ccafb04 optimize regex location search
Igor Sysoev <igor@sysoev.ru>
parents: 1234
diff changeset
2980 ngx_conf_t pcf;
f8a40ccafb04 optimize regex location search
Igor Sysoev <igor@sysoev.ru>
parents: 1234
diff changeset
2981 ngx_http_module_t *module;
3775
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
2982 struct sockaddr_in *sin;
1235
f8a40ccafb04 optimize regex location search
Igor Sysoev <igor@sysoev.ru>
parents: 1234
diff changeset
2983 ngx_http_conf_ctx_t *ctx, *http_ctx;
3775
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
2984 ngx_http_listen_opt_t lsopt;
1235
f8a40ccafb04 optimize regex location search
Igor Sysoev <igor@sysoev.ru>
parents: 1234
diff changeset
2985 ngx_http_core_srv_conf_t *cscf, **cscfp;
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
2986 ngx_http_core_main_conf_t *cmcf;
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2987
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
2988 ctx = ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
2989 if (ctx == NULL) {
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2990 return NGX_CONF_ERROR;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2991 }
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
2992
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
2993 http_ctx = cf->ctx;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
2994 ctx->main_conf = http_ctx->main_conf;
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 89
diff changeset
2995
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
2996 /* the server{}'s srv_conf */
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 89
diff changeset
2997
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2998 ctx->srv_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2999 if (ctx->srv_conf == NULL) {
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3000 return NGX_CONF_ERROR;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3001 }
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3002
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3003 /* the server{}'s loc_conf */
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 89
diff changeset
3004
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3005 ctx->loc_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3006 if (ctx->loc_conf == NULL) {
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3007 return NGX_CONF_ERROR;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3008 }
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3009
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3010 for (i = 0; ngx_modules[i]; i++) {
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3011 if (ngx_modules[i]->type != NGX_HTTP_MODULE) {
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3012 continue;
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3013 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3014
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3015 module = ngx_modules[i]->ctx;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3016
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3017 if (module->create_srv_conf) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3018 mconf = module->create_srv_conf(cf);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3019 if (mconf == NULL) {
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3020 return NGX_CONF_ERROR;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3021 }
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3022
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3023 ctx->srv_conf[ngx_modules[i]->ctx_index] = mconf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3024 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3025
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3026 if (module->create_loc_conf) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3027 mconf = module->create_loc_conf(cf);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3028 if (mconf == NULL) {
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3029 return NGX_CONF_ERROR;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3030 }
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3031
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3032 ctx->loc_conf[ngx_modules[i]->ctx_index] = mconf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3033 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3034 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3035
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3036
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3037 /* the server configuration context */
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3038
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
3039 cscf = ctx->srv_conf[ngx_http_core_module.ctx_index];
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3040 cscf->ctx = ctx;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3041
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3042
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
3043 cmcf = ctx->main_conf[ngx_http_core_module.ctx_index];
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3044
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3045 cscfp = ngx_array_push(&cmcf->servers);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3046 if (cscfp == NULL) {
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3047 return NGX_CONF_ERROR;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3048 }
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3049
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3050 *cscfp = cscf;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3051
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3052
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3053 /* parse inside server{} */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3054
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
3055 pcf = *cf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3056 cf->ctx = ctx;
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3057 cf->cmd_type = NGX_HTTP_SRV_CONF;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3058
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3059 rv = ngx_conf_parse(cf, NULL);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3060
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
3061 *cf = pcf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3062
3775
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3063 if (rv == NGX_CONF_OK && !cscf->listen) {
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3064 ngx_memzero(&lsopt, sizeof(ngx_http_listen_opt_t));
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3065
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3066 sin = &lsopt.u.sockaddr_in;
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3067
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3068 sin->sin_family = AF_INET;
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3069 #if (NGX_WIN32)
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3070 sin->sin_port = htons(80);
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3071 #else
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3072 sin->sin_port = htons((getuid() == 0) ? 80 : 8000);
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3073 #endif
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3074 sin->sin_addr.s_addr = INADDR_ANY;
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3075
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3076 lsopt.socklen = sizeof(struct sockaddr_in);
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3077
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3078 lsopt.backlog = NGX_LISTEN_BACKLOG;
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3079 lsopt.rcvbuf = -1;
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3080 lsopt.sndbuf = -1;
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3081 #if (NGX_HAVE_SETFIB)
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3082 lsopt.setfib = -1;
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3083 #endif
5456
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
3084 #if (NGX_HAVE_TCP_FASTOPEN)
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
3085 lsopt.fastopen = -1;
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
3086 #endif
3775
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3087 lsopt.wildcard = 1;
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3088
5263
05ba5bce31e0 Core: extended ngx_sock_ntop() with socklen parameter.
Vladimir Homutov <vl@nginx.com>
parents: 5254
diff changeset
3089 (void) ngx_sock_ntop(&lsopt.u.sockaddr, lsopt.socklen, lsopt.addr,
3775
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3090 NGX_SOCKADDR_STRLEN, 1);
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3091
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3092 if (ngx_http_add_listen(cf, cscf, &lsopt) != NGX_OK) {
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3093 return NGX_CONF_ERROR;
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3094 }
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3095 }
2902fc8487ae add default listen port at the end of server block parsing instead of
Igor Sysoev <igor@sysoev.ru>
parents: 3774
diff changeset
3096
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3097 return rv;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3098 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3099
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3100
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3101 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3102 ngx_http_core_location(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy)
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3103 {
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3104 char *rv;
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3105 u_char *mod;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3106 size_t len;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3107 ngx_str_t *value, *name;
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3108 ngx_uint_t i;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3109 ngx_conf_t save;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3110 ngx_http_module_t *module;
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3111 ngx_http_conf_ctx_t *ctx, *pctx;
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3112 ngx_http_core_loc_conf_t *clcf, *pclcf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3113
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3114 ctx = ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3115 if (ctx == NULL) {
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3116 return NGX_CONF_ERROR;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3117 }
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3118
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3119 pctx = cf->ctx;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3120 ctx->main_conf = pctx->main_conf;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3121 ctx->srv_conf = pctx->srv_conf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3122
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3123 ctx->loc_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3124 if (ctx->loc_conf == NULL) {
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3125 return NGX_CONF_ERROR;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3126 }
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3127
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3128 for (i = 0; ngx_modules[i]; i++) {
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3129 if (ngx_modules[i]->type != NGX_HTTP_MODULE) {
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3130 continue;
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3131 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3132
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3133 module = ngx_modules[i]->ctx;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3134
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3135 if (module->create_loc_conf) {
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3136 ctx->loc_conf[ngx_modules[i]->ctx_index] =
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3137 module->create_loc_conf(cf);
1246
7dda762dcc9a fix building --without-http_rewrite_module, the bug was introduced in r1236
Igor Sysoev <igor@sysoev.ru>
parents: 1236
diff changeset
3138 if (ctx->loc_conf[ngx_modules[i]->ctx_index] == NULL) {
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3139 return NGX_CONF_ERROR;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3140 }
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3141 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3142 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3143
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
3144 clcf = ctx->loc_conf[ngx_http_core_module.ctx_index];
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3145 clcf->loc_conf = ctx->loc_conf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3146
216
f1d0e5f09c1e nginx-0.0.1-2003-12-25-23:26:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 211
diff changeset
3147 value = cf->args->elts;
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3148
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3149 if (cf->args->nelts == 3) {
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3150
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3151 len = value[1].len;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3152 mod = value[1].data;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3153 name = &value[2];
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3154
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3155 if (len == 1 && mod[0] == '=') {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3156
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3157 clcf->name = *name;
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3158 clcf->exact_match = 1;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3159
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3160 } else if (len == 2 && mod[0] == '^' && mod[1] == '~') {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3161
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3162 clcf->name = *name;
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 463
diff changeset
3163 clcf->noregex = 1;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 463
diff changeset
3164
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3165 } else if (len == 1 && mod[0] == '~') {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3166
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3167 if (ngx_http_core_regex_location(cf, clcf, name, 0) != NGX_OK) {
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3168 return NGX_CONF_ERROR;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3169 }
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3170
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3171 } else if (len == 2 && mod[0] == '~' && mod[1] == '*') {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3172
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3173 if (ngx_http_core_regex_location(cf, clcf, name, 1) != NGX_OK) {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3174 return NGX_CONF_ERROR;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3175 }
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3176
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3177 } else {
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3178 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
3179 "invalid location modifier \"%V\"", &value[1]);
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3180 return NGX_CONF_ERROR;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3181 }
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3182
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3183 } else {
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
3184
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3185 name = &value[1];
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3186
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3187 if (name->data[0] == '=') {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3188
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3189 clcf->name.len = name->len - 1;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3190 clcf->name.data = name->data + 1;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3191 clcf->exact_match = 1;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3192
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3193 } else if (name->data[0] == '^' && name->data[1] == '~') {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3194
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3195 clcf->name.len = name->len - 2;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3196 clcf->name.data = name->data + 2;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3197 clcf->noregex = 1;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3198
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3199 } else if (name->data[0] == '~') {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3200
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3201 name->len--;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3202 name->data++;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3203
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3204 if (name->data[0] == '*') {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3205
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3206 name->len--;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3207 name->data++;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3208
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3209 if (ngx_http_core_regex_location(cf, clcf, name, 1) != NGX_OK) {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3210 return NGX_CONF_ERROR;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3211 }
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3212
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3213 } else {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3214 if (ngx_http_core_regex_location(cf, clcf, name, 0) != NGX_OK) {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3215 return NGX_CONF_ERROR;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3216 }
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3217 }
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3218
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3219 } else {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3220
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3221 clcf->name = *name;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3222
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3223 if (name->data[0] == '@') {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3224 clcf->named = 1;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3225 }
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
3226 }
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3227 }
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3228
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3229 pclcf = pctx->loc_conf[ngx_http_core_module.ctx_index];
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3230
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3231 if (pclcf->name.len) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3232
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3233 /* nested location */
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3234
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3235 #if 0
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3236 clcf->prev_location = pclcf;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3237 #endif
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3238
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3239 if (pclcf->exact_match) {
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3240 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
3241 "location \"%V\" cannot be inside "
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
3242 "the exact location \"%V\"",
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
3243 &clcf->name, &pclcf->name);
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3244 return NGX_CONF_ERROR;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3245 }
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3246
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
3247 if (pclcf->named) {
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
3248 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
3249 "location \"%V\" cannot be inside "
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
3250 "the named location \"%V\"",
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
3251 &clcf->name, &pclcf->name);
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
3252 return NGX_CONF_ERROR;
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
3253 }
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
3254
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3255 if (clcf->named) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3256 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
3257 "named location \"%V\" can be "
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
3258 "on the server level only",
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3259 &clcf->name);
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3260 return NGX_CONF_ERROR;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3261 }
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3262
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3263 len = pclcf->name.len;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3264
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
3265 #if (NGX_PCRE)
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3266 if (clcf->regex == NULL
5388
fbaae7d1c033 Caseless location tree construction (ticket #90).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5339
diff changeset
3267 && ngx_filename_cmp(clcf->name.data, pclcf->name.data, len) != 0)
400
69e851f83522 nginx-0.0.8-2004-07-26-20:21:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 396
diff changeset
3268 #else
5388
fbaae7d1c033 Caseless location tree construction (ticket #90).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5339
diff changeset
3269 if (ngx_filename_cmp(clcf->name.data, pclcf->name.data, len) != 0)
400
69e851f83522 nginx-0.0.8-2004-07-26-20:21:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 396
diff changeset
3270 #endif
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3271 {
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3272 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
3273 "location \"%V\" is outside location \"%V\"",
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
3274 &clcf->name, &pclcf->name);
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3275 return NGX_CONF_ERROR;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3276 }
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
3277 }
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 395
diff changeset
3278
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3279 if (ngx_http_add_location(cf, &pclcf->locations, clcf) != NGX_OK) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3280 return NGX_CONF_ERROR;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
3281 }
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3282
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3283 save = *cf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3284 cf->ctx = ctx;
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3285 cf->cmd_type = NGX_HTTP_LOC_CONF;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3286
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3287 rv = ngx_conf_parse(cf, NULL);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3288
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3289 *cf = save;
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3290
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3291 return rv;
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3292 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3293
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3294
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3295 static ngx_int_t
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3296 ngx_http_core_regex_location(ngx_conf_t *cf, ngx_http_core_loc_conf_t *clcf,
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3297 ngx_str_t *regex, ngx_uint_t caseless)
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3298 {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3299 #if (NGX_PCRE)
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3300 ngx_regex_compile_t rc;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3301 u_char errstr[NGX_MAX_CONF_ERRSTR];
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3302
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3303 ngx_memzero(&rc, sizeof(ngx_regex_compile_t));
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3304
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3305 rc.pattern = *regex;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3306 rc.err.len = NGX_MAX_CONF_ERRSTR;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3307 rc.err.data = errstr;
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3308
2981
635c0006441e use caseless regex locations on caseless filesystems: MacOSX, Win32, Cygwin
Igor Sysoev <igor@sysoev.ru>
parents: 2979
diff changeset
3309 #if (NGX_HAVE_CASELESS_FILESYSTEM)
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3310 rc.options = NGX_REGEX_CASELESS;
3390
8854f4eb2839 fix caseless locations, the bug had been introduced in r3326
Igor Sysoev <igor@sysoev.ru>
parents: 3388
diff changeset
3311 #else
5148
4bcd35e7a0f0 Pass PCRE_CASELESS to pcre_compile() for caseless matching.
Ruslan Ermilov <ru@nginx.com>
parents: 5121
diff changeset
3312 rc.options = caseless ? NGX_REGEX_CASELESS : 0;
2981
635c0006441e use caseless regex locations on caseless filesystems: MacOSX, Win32, Cygwin
Igor Sysoev <igor@sysoev.ru>
parents: 2979
diff changeset
3313 #endif
635c0006441e use caseless regex locations on caseless filesystems: MacOSX, Win32, Cygwin
Igor Sysoev <igor@sysoev.ru>
parents: 2979
diff changeset
3314
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
3315 clcf->regex = ngx_http_regex_compile(cf, &rc);
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3316 if (clcf->regex == NULL) {
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3317 return NGX_ERROR;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3318 }
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3319
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3320 clcf->name = *regex;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3321
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3322 return NGX_OK;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3323
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3324 #else
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3325
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3326 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
3327 "using regex \"%V\" requires PCRE library",
2400
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3328 regex);
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3329 return NGX_ERROR;
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3330
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3331 #endif
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3332 }
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3333
2c2b79633ded allow "~", "~*", "^~", and "=" before location name without space
Igor Sysoev <igor@sysoev.ru>
parents: 2377
diff changeset
3334
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3335 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3336 ngx_http_core_types(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3337 {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3338 ngx_http_core_loc_conf_t *clcf = conf;
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 635
diff changeset
3339
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3340 char *rv;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3341 ngx_conf_t save;
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3342
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3343 if (clcf->types == NULL) {
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3344 clcf->types = ngx_array_create(cf->pool, 64, sizeof(ngx_hash_key_t));
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3345 if (clcf->types == NULL) {
637
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 635
diff changeset
3346 return NGX_CONF_ERROR;
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 635
diff changeset
3347 }
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 635
diff changeset
3348 }
e60fe4cf1d4e nginx-0.3.40-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 635
diff changeset
3349
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3350 save = *cf;
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3351 cf->handler = ngx_http_core_type;
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3352 cf->handler_conf = conf;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3353
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3354 rv = ngx_conf_parse(cf, NULL);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3355
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3356 *cf = save;
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3357
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3358 return rv;
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3359 }
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3360
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3361
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3362 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3363 ngx_http_core_type(ngx_conf_t *cf, ngx_command_t *dummy, void *conf)
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3364 {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3365 ngx_http_core_loc_conf_t *clcf = conf;
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3366
4827
6e46016ea276 Fixed the "include" directive.
Ruslan Ermilov <ru@nginx.com>
parents: 4780
diff changeset
3367 ngx_str_t *value, *content_type, *old;
2136
7a7c9e9024dd ngx_hash_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
3368 ngx_uint_t i, n, hash;
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3369 ngx_hash_key_t *type;
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3370
1149
b8fe8a80e019 the "include" support inside the "types" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1148
diff changeset
3371 value = cf->args->elts;
b8fe8a80e019 the "include" support inside the "types" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1148
diff changeset
3372
b8fe8a80e019 the "include" support inside the "types" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1148
diff changeset
3373 if (ngx_strcmp(value[0].data, "include") == 0) {
4204
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3374 if (cf->args->nelts != 2) {
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3375 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3376 "invalid number of arguments"
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3377 " in \"include\" directive");
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3378 return NGX_CONF_ERROR;
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3379 }
4827
6e46016ea276 Fixed the "include" directive.
Ruslan Ermilov <ru@nginx.com>
parents: 4780
diff changeset
3380
6e46016ea276 Fixed the "include" directive.
Ruslan Ermilov <ru@nginx.com>
parents: 4780
diff changeset
3381 return ngx_conf_include(cf, dummy, conf);
1149
b8fe8a80e019 the "include" support inside the "types" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1148
diff changeset
3382 }
b8fe8a80e019 the "include" support inside the "types" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1148
diff changeset
3383
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3384 content_type = ngx_palloc(cf->pool, sizeof(ngx_str_t));
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3385 if (content_type == NULL) {
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3386 return NGX_CONF_ERROR;
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3387 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3388
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3389 *content_type = value[0];
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3390
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3391 for (i = 1; i < cf->args->nelts; i++) {
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3392
2136
7a7c9e9024dd ngx_hash_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
3393 hash = ngx_hash_strlow(value[i].data, value[i].data, value[i].len);
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3394
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3395 type = clcf->types->elts;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3396 for (n = 0; n < clcf->types->nelts; n++) {
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3397 if (ngx_strcmp(value[i].data, type[n].key.data) == 0) {
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3398 old = type[n].value;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3399 type[n].value = content_type;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3400
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3401 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
3402 "duplicate extension \"%V\", "
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3403 "content type: \"%V\", "
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
3404 "previous content type: \"%V\"",
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3405 &value[i], content_type, old);
4204
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3406 goto next;
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3407 }
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3408 }
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3409
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3410
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3411 type = ngx_array_push(clcf->types);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3412 if (type == NULL) {
426
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 425
diff changeset
3413 return NGX_CONF_ERROR;
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 425
diff changeset
3414 }
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 425
diff changeset
3415
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3416 type->key = value[i];
2136
7a7c9e9024dd ngx_hash_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
3417 type->key_hash = hash;
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3418 type->value = content_type;
4204
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3419
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3420 next:
657aaedcc0e3 Fixed two minor bugs in "types" parsing code.
Ruslan Ermilov <ru@nginx.com>
parents: 4203
diff changeset
3421 continue;
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3422 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3423
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3424 return NGX_CONF_OK;
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3425 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3426
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3427
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3428 static ngx_int_t
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3429 ngx_http_core_preconfiguration(ngx_conf_t *cf)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3430 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3431 return ngx_http_variables_add_core_vars(cf);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3432 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3433
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3434
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3435 static void *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3436 ngx_http_core_create_main_conf(ngx_conf_t *cf)
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3437 {
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3438 ngx_http_core_main_conf_t *cmcf;
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3439
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3440 cmcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_main_conf_t));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3441 if (cmcf == NULL) {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2907
diff changeset
3442 return NULL;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3443 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3444
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 489
diff changeset
3445 if (ngx_array_init(&cmcf->servers, cf->pool, 4,
569
174f1e853e1e nginx-0.3.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
3446 sizeof(ngx_http_core_srv_conf_t *))
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
3447 != NGX_OK)
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3448 {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2907
diff changeset
3449 return NULL;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
3450 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3451
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
3452 cmcf->server_names_hash_max_size = NGX_CONF_UNSET_UINT;
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
3453 cmcf->server_names_hash_bucket_size = NGX_CONF_UNSET_UINT;
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
3454
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
3455 cmcf->variables_hash_max_size = NGX_CONF_UNSET_UINT;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
3456 cmcf->variables_hash_bucket_size = NGX_CONF_UNSET_UINT;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
3457
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3458 return cmcf;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3459 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3460
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3461
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3462 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3463 ngx_http_core_init_main_conf(ngx_conf_t *cf, void *conf)
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3464 {
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
3465 ngx_http_core_main_conf_t *cmcf = conf;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3466
5617
68c6cc832c76 Macros used for initialization in ngx_http_core_init_main_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5605
diff changeset
3467 ngx_conf_init_uint_value(cmcf->server_names_hash_max_size, 512);
68c6cc832c76 Macros used for initialization in ngx_http_core_init_main_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5605
diff changeset
3468 ngx_conf_init_uint_value(cmcf->server_names_hash_bucket_size,
68c6cc832c76 Macros used for initialization in ngx_http_core_init_main_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5605
diff changeset
3469 ngx_cacheline_size);
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3470
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
3471 cmcf->server_names_hash_bucket_size =
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
3472 ngx_align(cmcf->server_names_hash_bucket_size, ngx_cacheline_size);
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
3473
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
3474
5623
d0e75244a18a Increased default value of variables_hash_max_size.
Andrei Belov <defan@nginx.com>
parents: 5617
diff changeset
3475 ngx_conf_init_uint_value(cmcf->variables_hash_max_size, 1024);
5617
68c6cc832c76 Macros used for initialization in ngx_http_core_init_main_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5605
diff changeset
3476 ngx_conf_init_uint_value(cmcf->variables_hash_bucket_size, 64);
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
3477
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
3478 cmcf->variables_hash_bucket_size =
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
3479 ngx_align(cmcf->variables_hash_bucket_size, ngx_cacheline_size);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 609
diff changeset
3480
3345
d8228f0b5113 evaluate maximum captures size on configuration phase
Igor Sysoev <igor@sysoev.ru>
parents: 3325
diff changeset
3481 if (cmcf->ncaptures) {
d8228f0b5113 evaluate maximum captures size on configuration phase
Igor Sysoev <igor@sysoev.ru>
parents: 3325
diff changeset
3482 cmcf->ncaptures = (cmcf->ncaptures + 1) * 3;
d8228f0b5113 evaluate maximum captures size on configuration phase
Igor Sysoev <igor@sysoev.ru>
parents: 3325
diff changeset
3483 }
d8228f0b5113 evaluate maximum captures size on configuration phase
Igor Sysoev <igor@sysoev.ru>
parents: 3325
diff changeset
3484
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3485 return NGX_CONF_OK;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3486 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3487
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3488
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3489 static void *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3490 ngx_http_core_create_srv_conf(ngx_conf_t *cf)
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3491 {
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3492 ngx_http_core_srv_conf_t *cscf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3493
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3494 cscf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_srv_conf_t));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3495 if (cscf == NULL) {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2907
diff changeset
3496 return NULL;
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3497 }
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3498
435
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 434
diff changeset
3499 /*
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3500 * set by ngx_pcalloc():
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
3501 *
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
3502 * conf->client_large_buffers.num = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
3503 */
435
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 434
diff changeset
3504
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 679
diff changeset
3505 if (ngx_array_init(&cscf->server_names, cf->temp_pool, 4,
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
3506 sizeof(ngx_http_server_name_t))
2536
a6d6d762c554 small optimization: " == NGX_ERROR" > " != NGX_OK"
Igor Sysoev <igor@sysoev.ru>
parents: 2533
diff changeset
3507 != NGX_OK)
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3508 {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2907
diff changeset
3509 return NULL;
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3510 }
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3511
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
3512 cscf->connection_pool_size = NGX_CONF_UNSET_SIZE;
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
3513 cscf->request_pool_size = NGX_CONF_UNSET_SIZE;
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
3514 cscf->client_header_timeout = NGX_CONF_UNSET_MSEC;
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
3515 cscf->client_header_buffer_size = NGX_CONF_UNSET_SIZE;
511
c12967aadd87 nginx-0.1.30-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
3516 cscf->ignore_invalid_headers = NGX_CONF_UNSET;
1585
4435ca2e467d merge_slashes
Igor Sysoev <igor@sysoev.ru>
parents: 1580
diff changeset
3517 cscf->merge_slashes = NGX_CONF_UNSET;
2256
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
3518 cscf->underscores_in_headers = NGX_CONF_UNSET;
95
b48066122884 nginx-0.0.1-2003-05-23-15:53:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 94
diff changeset
3519
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3520 return cscf;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3521 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3522
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3523
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3524 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3525 ngx_http_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3526 {
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3527 ngx_http_core_srv_conf_t *prev = parent;
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3528 ngx_http_core_srv_conf_t *conf = child;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3529
3853
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3530 ngx_str_t name;
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
3531 ngx_http_server_name_t *sn;
19
d7908993fdeb nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
3532
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
3533 /* TODO: it does not merge, it inits only */
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3534
3259
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3535 ngx_conf_merge_size_value(conf->connection_pool_size,
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3536 prev->connection_pool_size, 256);
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3537 ngx_conf_merge_size_value(conf->request_pool_size,
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3538 prev->request_pool_size, 4096);
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3539 ngx_conf_merge_msec_value(conf->client_header_timeout,
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3540 prev->client_header_timeout, 60000);
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3541 ngx_conf_merge_size_value(conf->client_header_buffer_size,
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3542 prev->client_header_buffer_size, 1024);
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3543 ngx_conf_merge_bufs_value(conf->large_client_header_buffers,
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3544 prev->large_client_header_buffers,
3381
49f977515733 default large_client_header_buffers' buffer size should be 8K as compatible
Igor Sysoev <igor@sysoev.ru>
parents: 3372
diff changeset
3545 4, 8192);
3259
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3546
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3547 if (conf->large_client_header_buffers.size < conf->connection_pool_size) {
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3548 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3549 "the \"large_client_header_buffers\" size must be "
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
3550 "equal to or greater than \"connection_pool_size\"");
3259
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3551 return NGX_CONF_ERROR;
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3552 }
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3553
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3554 ngx_conf_merge_value(conf->ignore_invalid_headers,
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3555 prev->ignore_invalid_headers, 1);
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3556
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3557 ngx_conf_merge_value(conf->merge_slashes, prev->merge_slashes, 1);
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3558
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3559 ngx_conf_merge_value(conf->underscores_in_headers,
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3560 prev->underscores_in_headers, 0);
e9c0fae6be1e fix segfaults if no listen directive was set in default server {} block:
Igor Sysoev <igor@sysoev.ru>
parents: 3225
diff changeset
3561
3853
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3562 if (conf->server_names.nelts == 0) {
4133
59b99f217c6d Replaced "can not" with "cannot" and "could not" in a bunch of places.
Ruslan Ermilov <ru@nginx.com>
parents: 4132
diff changeset
3563 /* the array has 4 empty preallocated elements, so push cannot fail */
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
3564 sn = ngx_array_push(&conf->server_names);
1580
c9a0f82deb7c fix segfault if no server_name was defined
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
3565 #if (NGX_PCRE)
c9a0f82deb7c fix segfault if no server_name was defined
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
3566 sn->regex = NULL;
c9a0f82deb7c fix segfault if no server_name was defined
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
3567 #endif
3221
c8de5a8b6d17 rename core_srv_conf fields to more understandable default_server and server
Igor Sysoev <igor@sysoev.ru>
parents: 3220
diff changeset
3568 sn->server = conf;
3720
c3a37fc8d1fe use an empty name as default server_name instread of hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3719
diff changeset
3569 ngx_str_set(&sn->name, "");
47
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 46
diff changeset
3570 }
d81326c3b21b nginx-0.0.1-2003-01-15-10:02:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 46
diff changeset
3571
3853
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3572 sn = conf->server_names.elts;
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3573 name = sn[0].name;
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3574
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3575 #if (NGX_PCRE)
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3576 if (sn->regex) {
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3577 name.len++;
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3578 name.data--;
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3579 } else
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3580 #endif
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3581
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3582 if (name.data[0] == '.') {
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3583 name.len--;
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3584 name.data++;
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3585 }
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3586
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3587 conf->server_name.len = name.len;
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3588 conf->server_name.data = ngx_pstrdup(cf->pool, &name);
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3589 if (conf->server_name.data == NULL) {
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3590 return NGX_CONF_ERROR;
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3591 }
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
3592
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3593 return NGX_CONF_OK;
19
d7908993fdeb nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
3594 }
d7908993fdeb nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
3595
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3596
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3597 static void *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3598 ngx_http_core_create_loc_conf(ngx_conf_t *cf)
19
d7908993fdeb nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
3599 {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3600 ngx_http_core_loc_conf_t *clcf;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3601
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3602 clcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_loc_conf_t));
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3603 if (clcf == NULL) {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2907
diff changeset
3604 return NULL;
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3605 }
19
d7908993fdeb nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
3606
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
3607 /*
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
3608 * set by ngx_pcalloc():
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
3609 *
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3610 * clcf->root = { 0, NULL };
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3611 * clcf->limit_except = 0;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3612 * clcf->post_action = { 0, NULL };
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3613 * clcf->types = NULL;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3614 * clcf->default_type = { 0, NULL };
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3615 * clcf->error_log = NULL;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3616 * clcf->error_pages = NULL;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3617 * clcf->try_files = NULL;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3618 * clcf->client_body_path = NULL;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3619 * clcf->regex = NULL;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3620 * clcf->exact_match = 0;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3621 * clcf->auto_redirect = 0;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3622 * clcf->alias = 0;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3623 * clcf->gzip_proxied = 0;
4300
986be4081f71 Fixed "keepalive_disable".
Ruslan Ermilov <ru@nginx.com>
parents: 4269
diff changeset
3624 * clcf->keepalive_disable = 0;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
3625 */
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
3626
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3627 clcf->client_max_body_size = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3628 clcf->client_body_buffer_size = NGX_CONF_UNSET_SIZE;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3629 clcf->client_body_timeout = NGX_CONF_UNSET_MSEC;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3630 clcf->satisfy = NGX_CONF_UNSET_UINT;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3631 clcf->if_modified_since = NGX_CONF_UNSET_UINT;
4062
82738a316a54 The "max_ranges" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 3994
diff changeset
3632 clcf->max_ranges = NGX_CONF_UNSET_UINT;
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3633 clcf->client_body_in_file_only = NGX_CONF_UNSET_UINT;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3634 clcf->client_body_in_single_buffer = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3635 clcf->internal = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3636 clcf->sendfile = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3637 clcf->sendfile_max_chunk = NGX_CONF_UNSET_SIZE;
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
3638 #if (NGX_HAVE_FILE_AIO)
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3639 clcf->aio = NGX_CONF_UNSET;
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
3640 #endif
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3641 clcf->read_ahead = NGX_CONF_UNSET_SIZE;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3642 clcf->directio = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3643 clcf->directio_alignment = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3644 clcf->tcp_nopush = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3645 clcf->tcp_nodelay = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3646 clcf->send_timeout = NGX_CONF_UNSET_MSEC;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3647 clcf->send_lowat = NGX_CONF_UNSET_SIZE;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3648 clcf->postpone_output = NGX_CONF_UNSET_SIZE;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3649 clcf->limit_rate = NGX_CONF_UNSET_SIZE;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3650 clcf->limit_rate_after = NGX_CONF_UNSET_SIZE;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3651 clcf->keepalive_timeout = NGX_CONF_UNSET_MSEC;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3652 clcf->keepalive_header = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3653 clcf->keepalive_requests = NGX_CONF_UNSET_UINT;
3984
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
3654 clcf->lingering_close = NGX_CONF_UNSET_UINT;
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3655 clcf->lingering_time = NGX_CONF_UNSET_MSEC;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3656 clcf->lingering_timeout = NGX_CONF_UNSET_MSEC;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3657 clcf->resolver_timeout = NGX_CONF_UNSET_MSEC;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3658 clcf->reset_timedout_connection = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3659 clcf->server_name_in_redirect = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3660 clcf->port_in_redirect = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3661 clcf->msie_padding = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3662 clcf->msie_refresh = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3663 clcf->log_not_found = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3664 clcf->log_subrequest = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3665 clcf->recursive_error_pages = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3666 clcf->server_tokens = NGX_CONF_UNSET;
3484
81457372d938 chunked_transfer_encoding
Igor Sysoev <igor@sysoev.ru>
parents: 3452
diff changeset
3667 clcf->chunked_transfer_encoding = NGX_CONF_UNSET;
4749
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
3668 clcf->etag = NGX_CONF_UNSET;
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3669 clcf->types_hash_max_size = NGX_CONF_UNSET_UINT;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3670 clcf->types_hash_bucket_size = NGX_CONF_UNSET_UINT;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3671
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3672 clcf->open_file_cache = NGX_CONF_UNSET_PTR;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3673 clcf->open_file_cache_valid = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3674 clcf->open_file_cache_min_uses = NGX_CONF_UNSET_UINT;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3675 clcf->open_file_cache_errors = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3676 clcf->open_file_cache_events = NGX_CONF_UNSET;
158
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
3677
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3678 #if (NGX_HTTP_GZIP)
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3679 clcf->gzip_vary = NGX_CONF_UNSET;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3680 clcf->gzip_http_version = NGX_CONF_UNSET_UINT;
1800
3e1c695258d3 fix building --without-pcre
Igor Sysoev <igor@sysoev.ru>
parents: 1790
diff changeset
3681 #if (NGX_PCRE)
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3682 clcf->gzip_disable = NGX_CONF_UNSET_PTR;
3752
6cde13492433 gzip_disable msie6 did not inherited if nginx was built without PCRE
Igor Sysoev <igor@sysoev.ru>
parents: 3749
diff changeset
3683 #endif
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3684 clcf->gzip_disable_msie6 = 3;
3773
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3685 #if (NGX_HTTP_DEGRADATION)
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3686 clcf->gzip_disable_degradation = 3;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3687 #endif
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3688 #endif
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3689
4477
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
3690 #if (NGX_HAVE_OPENAT)
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
3691 clcf->disable_symlinks = NGX_CONF_UNSET_UINT;
4495
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
3692 clcf->disable_symlinks_from = NGX_CONF_UNSET_PTR;
4477
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
3693 #endif
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
3694
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
3695 return clcf;
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3696 }
54
27b628ef907e nginx-0.0.1-2003-01-28-18:56:37 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
3697
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3698
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3699 static ngx_str_t ngx_http_core_text_html_type = ngx_string("text/html");
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3700 static ngx_str_t ngx_http_core_image_gif_type = ngx_string("image/gif");
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3701 static ngx_str_t ngx_http_core_image_jpeg_type = ngx_string("image/jpeg");
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3702
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3703 static ngx_hash_key_t ngx_http_core_default_types[] = {
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3704 { ngx_string("html"), 0, &ngx_http_core_text_html_type },
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3705 { ngx_string("gif"), 0, &ngx_http_core_image_gif_type },
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3706 { ngx_string("jpg"), 0, &ngx_http_core_image_jpeg_type },
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3707 { ngx_null_string, 0, NULL }
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3708 };
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3709
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3710
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3711 static char *
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3712 ngx_http_core_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
71
59229033ae93 nginx-0.0.1-2003-04-08-19:40:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
3713 {
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3714 ngx_http_core_loc_conf_t *prev = parent;
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
3715 ngx_http_core_loc_conf_t *conf = child;
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3716
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3717 ngx_uint_t i;
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3718 ngx_hash_key_t *type;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3719 ngx_hash_init_t types_hash;
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3720
603
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3721 if (conf->root.data == NULL) {
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3722
625
fbed40ce7cb4 nginx-0.3.34-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
3723 conf->alias = prev->alias;
603
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3724 conf->root = prev->root;
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3725 conf->root_lengths = prev->root_lengths;
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3726 conf->root_values = prev->root_values;
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3727
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3728 if (prev->root.data == NULL) {
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3484
diff changeset
3729 ngx_str_set(&conf->root, "html");
603
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3730
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5317
diff changeset
3731 if (ngx_conf_full_name(cf->cycle, &conf->root, 0) != NGX_OK) {
603
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3732 return NGX_CONF_ERROR;
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3733 }
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
3734 }
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 439
diff changeset
3735 }
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 439
diff changeset
3736
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
3737 if (conf->post_action.data == NULL) {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
3738 conf->post_action = prev->post_action;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
3739 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
3740
663
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 657
diff changeset
3741 ngx_conf_merge_uint_value(conf->types_hash_max_size,
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 657
diff changeset
3742 prev->types_hash_max_size, 1024);
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 657
diff changeset
3743
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 657
diff changeset
3744 ngx_conf_merge_uint_value(conf->types_hash_bucket_size,
5637
5a65b9d8bc2b Adjusted default value of types_hash_bucket_size (ticket #352).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5623
diff changeset
3745 prev->types_hash_bucket_size, 64);
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3746
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3747 conf->types_hash_bucket_size = ngx_align(conf->types_hash_bucket_size,
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3748 ngx_cacheline_size);
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3749
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3750 /*
4203
a949b15df739 Fixed grammar in a comment.
Ruslan Ermilov <ru@nginx.com>
parents: 4202
diff changeset
3751 * the special handling of the "types" directive in the "http" section
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3752 * to inherit the http's conf->types_hash to all servers
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3753 */
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3754
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3755 if (prev->types && prev->types_hash.buckets == NULL) {
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3756
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3757 types_hash.hash = &prev->types_hash;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3758 types_hash.key = ngx_hash_key_lc;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3759 types_hash.max_size = conf->types_hash_max_size;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3760 types_hash.bucket_size = conf->types_hash_bucket_size;
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
3761 types_hash.name = "types_hash";
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3762 types_hash.pool = cf->pool;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3763 types_hash.temp_pool = NULL;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3764
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3765 if (ngx_hash_init(&types_hash, prev->types->elts, prev->types->nelts)
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3766 != NGX_OK)
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3767 {
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3768 return NGX_CONF_ERROR;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3769 }
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3770 }
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3771
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3772 if (conf->types == NULL) {
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3773 conf->types = prev->types;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3774 conf->types_hash = prev->types_hash;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3775 }
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3776
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3777 if (conf->types == NULL) {
4200
4f5b3714eead Preallocating exact number of default MIME types entries.
Igor Sysoev <igor@sysoev.ru>
parents: 4198
diff changeset
3778 conf->types = ngx_array_create(cf->pool, 3, sizeof(ngx_hash_key_t));
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3779 if (conf->types == NULL) {
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3780 return NGX_CONF_ERROR;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3781 }
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3782
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3783 for (i = 0; ngx_http_core_default_types[i].key.len; i++) {
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3784 type = ngx_array_push(conf->types);
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3785 if (type == NULL) {
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3786 return NGX_CONF_ERROR;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3787 }
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3788
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3789 type->key = ngx_http_core_default_types[i].key;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3790 type->key_hash =
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3791 ngx_hash_key_lc(ngx_http_core_default_types[i].key.data,
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3792 ngx_http_core_default_types[i].key.len);
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3793 type->value = ngx_http_core_default_types[i].value;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3794 }
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3795 }
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3796
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3797 if (conf->types_hash.buckets == NULL) {
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3798
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3799 types_hash.hash = &conf->types_hash;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3800 types_hash.key = ngx_hash_key_lc;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3801 types_hash.max_size = conf->types_hash_max_size;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3802 types_hash.bucket_size = conf->types_hash_bucket_size;
4190
d434191a147f Fixing directive name in error message if types hash size is not enough.
Igor Sysoev <igor@sysoev.ru>
parents: 4149
diff changeset
3803 types_hash.name = "types_hash";
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3804 types_hash.pool = cf->pool;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3805 types_hash.temp_pool = NULL;
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3806
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3807 if (ngx_hash_init(&types_hash, conf->types->elts, conf->types->nelts)
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3808 != NGX_OK)
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3809 {
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
3810 return NGX_CONF_ERROR;
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3811 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3812 }
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3813
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2756
diff changeset
3814 if (conf->error_log == NULL) {
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2756
diff changeset
3815 if (prev->error_log) {
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2756
diff changeset
3816 conf->error_log = prev->error_log;
119
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
3817 } else {
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2756
diff changeset
3818 conf->error_log = &cf->cycle->new_log;
119
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
3819 }
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
3820 }
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
3821
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
3822 if (conf->error_pages == NULL && prev->error_pages) {
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
3823 conf->error_pages = prev->error_pages;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
3824 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
3825
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
3826 ngx_conf_merge_str_value(conf->default_type,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3827 prev->default_type, "text/plain");
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 95
diff changeset
3828
663
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 657
diff changeset
3829 ngx_conf_merge_off_value(conf->client_max_body_size,
448
241dc8092a33 nginx-0.1.0-2004-10-01-19:53:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
3830 prev->client_max_body_size, 1 * 1024 * 1024);
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 300
diff changeset
3831 ngx_conf_merge_size_value(conf->client_body_buffer_size,
448
241dc8092a33 nginx-0.1.0-2004-10-01-19:53:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
3832 prev->client_body_buffer_size,
241dc8092a33 nginx-0.1.0-2004-10-01-19:53:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
3833 (size_t) 2 * ngx_pagesize);
162
96993d4d5067 nginx-0.0.1-2003-10-28-00:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 160
diff changeset
3834 ngx_conf_merge_msec_value(conf->client_body_timeout,
253
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 234
diff changeset
3835 prev->client_body_timeout, 60000);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3836
4266
4c45306936bb Fix of "keepalive_disable" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4225
diff changeset
3837 ngx_conf_merge_bitmask_value(conf->keepalive_disable,
4c45306936bb Fix of "keepalive_disable" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4225
diff changeset
3838 prev->keepalive_disable,
4c45306936bb Fix of "keepalive_disable" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4225
diff changeset
3839 (NGX_CONF_BITMASK_SET
4551
22e613ba0925 Removed safari from keepalive_disable default.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4541
diff changeset
3840 |NGX_HTTP_KEEPALIVE_DISABLE_MSIE6));
1806
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
3841 ngx_conf_merge_uint_value(conf->satisfy, prev->satisfy,
ba9e6e57f65d satisfy all|any
Igor Sysoev <igor@sysoev.ru>
parents: 1804
diff changeset
3842 NGX_HTTP_SATISFY_ALL);
2361
c59485781f0a if_modified_since
Igor Sysoev <igor@sysoev.ru>
parents: 2278
diff changeset
3843 ngx_conf_merge_uint_value(conf->if_modified_since, prev->if_modified_since,
2496
9081bbdccda1 if_modified_since off
Igor Sysoev <igor@sysoev.ru>
parents: 2481
diff changeset
3844 NGX_HTTP_IMS_EXACT);
4062
82738a316a54 The "max_ranges" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 3994
diff changeset
3845 ngx_conf_merge_uint_value(conf->max_ranges, prev->max_ranges,
4202
7a739880b80c Replaced magic constants representing default values of some directives
Ruslan Ermilov <ru@nginx.com>
parents: 4200
diff changeset
3846 NGX_MAX_INT32_VALUE);
2841
faafc084a7a4 fix client_body_in_file_only type
Igor Sysoev <igor@sysoev.ru>
parents: 2820
diff changeset
3847 ngx_conf_merge_uint_value(conf->client_body_in_file_only,
4202
7a739880b80c Replaced magic constants representing default values of some directives
Ruslan Ermilov <ru@nginx.com>
parents: 4200
diff changeset
3848 prev->client_body_in_file_only,
7a739880b80c Replaced magic constants representing default values of some directives
Ruslan Ermilov <ru@nginx.com>
parents: 4200
diff changeset
3849 NGX_HTTP_REQUEST_BODY_FILE_OFF);
2845
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
3850 ngx_conf_merge_value(conf->client_body_in_single_buffer,
10d6b9950453 client_body_in_single_buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2843
diff changeset
3851 prev->client_body_in_single_buffer, 0);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3852 ngx_conf_merge_value(conf->internal, prev->internal, 0);
154
eac26585476e nginx-0.0.1-2003-10-22-11:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 153
diff changeset
3853 ngx_conf_merge_value(conf->sendfile, prev->sendfile, 0);
1197
493a227edfd5 sendfile_max_chunk
Igor Sysoev <igor@sysoev.ru>
parents: 1179
diff changeset
3854 ngx_conf_merge_size_value(conf->sendfile_max_chunk,
493a227edfd5 sendfile_max_chunk
Igor Sysoev <igor@sysoev.ru>
parents: 1179
diff changeset
3855 prev->sendfile_max_chunk, 0);
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
3856 #if (NGX_HAVE_FILE_AIO)
4202
7a739880b80c Replaced magic constants representing default values of some directives
Ruslan Ermilov <ru@nginx.com>
parents: 4200
diff changeset
3857 ngx_conf_merge_value(conf->aio, prev->aio, NGX_HTTP_AIO_OFF);
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 3050
diff changeset
3858 #endif
3178
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3167
diff changeset
3859 ngx_conf_merge_size_value(conf->read_ahead, prev->read_ahead, 0);
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
3860 ngx_conf_merge_off_value(conf->directio, prev->directio,
4202
7a739880b80c Replaced magic constants representing default values of some directives
Ruslan Ermilov <ru@nginx.com>
parents: 4200
diff changeset
3861 NGX_OPEN_FILE_DIRECTIO_OFF);
3053
0d253659da12 directio_alignment
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
3862 ngx_conf_merge_off_value(conf->directio_alignment, prev->directio_alignment,
0d253659da12 directio_alignment
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
3863 512);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
3864 ngx_conf_merge_value(conf->tcp_nopush, prev->tcp_nopush, 0);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
3865 ngx_conf_merge_value(conf->tcp_nodelay, prev->tcp_nodelay, 1);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
3866
253
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 234
diff changeset
3867 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 60000);
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
3868 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0);
391
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
3869 ngx_conf_merge_size_value(conf->postpone_output, prev->postpone_output,
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
3870 1460);
b670db10cbbd nginx-0.0.7-2004-07-14-20:01:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
3871 ngx_conf_merge_size_value(conf->limit_rate, prev->limit_rate, 0);
2907
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
3872 ngx_conf_merge_size_value(conf->limit_rate_after, prev->limit_rate_after,
4f5753877376 limit_rate_after
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
3873 0);
95
b48066122884 nginx-0.0.1-2003-05-23-15:53:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 94
diff changeset
3874 ngx_conf_merge_msec_value(conf->keepalive_timeout,
429
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
3875 prev->keepalive_timeout, 75000);
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
3876 ngx_conf_merge_sec_value(conf->keepalive_header,
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
3877 prev->keepalive_header, 0);
2888
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
3878 ngx_conf_merge_uint_value(conf->keepalive_requests,
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2881
diff changeset
3879 prev->keepalive_requests, 100);
3990
3165250f6c16 fix typo introduced in r3985
Igor Sysoev <igor@sysoev.ru>
parents: 3986
diff changeset
3880 ngx_conf_merge_uint_value(conf->lingering_close,
3984
3e51832c8215 lingering_close "off|on|always"
Igor Sysoev <igor@sysoev.ru>
parents: 3982
diff changeset
3881 prev->lingering_close, NGX_HTTP_LINGERING_ON);
95
b48066122884 nginx-0.0.1-2003-05-23-15:53:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 94
diff changeset
3882 ngx_conf_merge_msec_value(conf->lingering_time,
b48066122884 nginx-0.0.1-2003-05-23-15:53:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 94
diff changeset
3883 prev->lingering_time, 30000);
b48066122884 nginx-0.0.1-2003-05-23-15:53:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 94
diff changeset
3884 ngx_conf_merge_msec_value(conf->lingering_timeout,
b48066122884 nginx-0.0.1-2003-05-23-15:53:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 94
diff changeset
3885 prev->lingering_timeout, 5000);
1652
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
3886 ngx_conf_merge_msec_value(conf->resolver_timeout,
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
3887 prev->resolver_timeout, 30000);
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
3888
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
3889 if (conf->resolver == NULL) {
1919
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3890
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3891 if (prev->resolver == NULL) {
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3892
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3893 /*
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3894 * create dummy resolver in http {} context
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3895 * to inherit it in all servers
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3896 */
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3897
4225
016352c19049 Support of several servers in the "resolver" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4210
diff changeset
3898 prev->resolver = ngx_resolver_create(cf, NULL, 0);
1919
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3899 if (prev->resolver == NULL) {
1881
10ab4a7f92fe fix return code
Igor Sysoev <igor@sysoev.ru>
parents: 1859
diff changeset
3900 return NGX_CONF_ERROR;
1683
1e0b028055ec allow to use IP addresses without defined resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1675
diff changeset
3901 }
1e0b028055ec allow to use IP addresses without defined resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1675
diff changeset
3902 }
2006
b52cb9bf2064 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 1982
diff changeset
3903
1919
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
3904 conf->resolver = prev->resolver;
1652
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
3905 }
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3906
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
3907 if (ngx_conf_merge_path_value(cf, &conf->client_body_temp_path,
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
3908 prev->client_body_temp_path,
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
3909 &ngx_http_client_temp_path)
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
3910 != NGX_OK)
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
3911 {
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
3912 return NGX_CONF_ERROR;
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2591
diff changeset
3913 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 477
diff changeset
3914
346
55e496a8ece3 nginx-0.0.3-2004-06-06-23:49:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
3915 ngx_conf_merge_value(conf->reset_timedout_connection,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3916 prev->reset_timedout_connection, 0);
1804
d457a1576532 several changes in server_name:
Igor Sysoev <igor@sysoev.ru>
parents: 1801
diff changeset
3917 ngx_conf_merge_value(conf->server_name_in_redirect,
3721
c62a2683bfbf change default server_name_in_redirect value to off,
Igor Sysoev <igor@sysoev.ru>
parents: 3720
diff changeset
3918 prev->server_name_in_redirect, 0);
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 513
diff changeset
3919 ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1);
158
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
3920 ngx_conf_merge_value(conf->msie_padding, prev->msie_padding, 1);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
3921 ngx_conf_merge_value(conf->msie_refresh, prev->msie_refresh, 0);
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
3922 ngx_conf_merge_value(conf->log_not_found, prev->log_not_found, 1);
2261
07bf557a2e40 *) log_subrequest
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
3923 ngx_conf_merge_value(conf->log_subrequest, prev->log_subrequest, 0);
679
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
3924 ngx_conf_merge_value(conf->recursive_error_pages,
df95dcff753a nginx-0.3.61-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 677
diff changeset
3925 prev->recursive_error_pages, 0);
1592
128ea9efb824 server_tokens
Igor Sysoev <igor@sysoev.ru>
parents: 1591
diff changeset
3926 ngx_conf_merge_value(conf->server_tokens, prev->server_tokens, 1);
3484
81457372d938 chunked_transfer_encoding
Igor Sysoev <igor@sysoev.ru>
parents: 3452
diff changeset
3927 ngx_conf_merge_value(conf->chunked_transfer_encoding,
81457372d938 chunked_transfer_encoding
Igor Sysoev <igor@sysoev.ru>
parents: 3452
diff changeset
3928 prev->chunked_transfer_encoding, 1);
4749
613750237b36 Entity tags: the "etag" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4748
diff changeset
3929 ngx_conf_merge_value(conf->etag, prev->etag, 1);
158
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
3930
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
3931 ngx_conf_merge_ptr_value(conf->open_file_cache,
1780
74840e606733 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1772
diff changeset
3932 prev->open_file_cache, NULL);
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
3933
1767
c42431762903 open_file_cache_retest > open_file_cache_valid
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
3934 ngx_conf_merge_sec_value(conf->open_file_cache_valid,
1780
74840e606733 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1772
diff changeset
3935 prev->open_file_cache_valid, 60);
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
3936
1772
25c93614e6b9 open_file_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 1767
diff changeset
3937 ngx_conf_merge_uint_value(conf->open_file_cache_min_uses,
1780
74840e606733 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1772
diff changeset
3938 prev->open_file_cache_min_uses, 1);
1772
25c93614e6b9 open_file_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 1767
diff changeset
3939
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
3940 ngx_conf_merge_sec_value(conf->open_file_cache_errors,
1780
74840e606733 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1772
diff changeset
3941 prev->open_file_cache_errors, 0);
201
267ea1d98683 nginx-0.0.1-2003-11-30-23:03:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
3942
1457
223e92651ca5 open_file_cache_events
Igor Sysoev <igor@sysoev.ru>
parents: 1454
diff changeset
3943 ngx_conf_merge_sec_value(conf->open_file_cache_events,
1780
74840e606733 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1772
diff changeset
3944 prev->open_file_cache_events, 0);
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3945 #if (NGX_HTTP_GZIP)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3946
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3947 ngx_conf_merge_value(conf->gzip_vary, prev->gzip_vary, 0);
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3948 ngx_conf_merge_uint_value(conf->gzip_http_version, prev->gzip_http_version,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3949 NGX_HTTP_VERSION_11);
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3950 ngx_conf_merge_bitmask_value(conf->gzip_proxied, prev->gzip_proxied,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3951 (NGX_CONF_BITMASK_SET|NGX_HTTP_GZIP_PROXIED_OFF));
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3952
1800
3e1c695258d3 fix building --without-pcre
Igor Sysoev <igor@sysoev.ru>
parents: 1790
diff changeset
3953 #if (NGX_PCRE)
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3954 ngx_conf_merge_ptr_value(conf->gzip_disable, prev->gzip_disable, NULL);
1800
3e1c695258d3 fix building --without-pcre
Igor Sysoev <igor@sysoev.ru>
parents: 1790
diff changeset
3955 #endif
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3956
2205
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
3957 if (conf->gzip_disable_msie6 == 3) {
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
3958 conf->gzip_disable_msie6 =
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
3959 (prev->gzip_disable_msie6 == 3) ? 0 : prev->gzip_disable_msie6;
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
3960 }
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
3961
3773
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3962 #if (NGX_HTTP_DEGRADATION)
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3963
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3964 if (conf->gzip_disable_degradation == 3) {
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3965 conf->gzip_disable_degradation =
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3966 (prev->gzip_disable_degradation == 3) ?
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3967 0 : prev->gzip_disable_degradation;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3968 }
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3969
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
3970 #endif
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
3971 #endif
1457
223e92651ca5 open_file_cache_events
Igor Sysoev <igor@sysoev.ru>
parents: 1454
diff changeset
3972
4477
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
3973 #if (NGX_HAVE_OPENAT)
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
3974 ngx_conf_merge_uint_value(conf->disable_symlinks, prev->disable_symlinks,
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
3975 NGX_DISABLE_SYMLINKS_OFF);
4495
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
3976 ngx_conf_merge_ptr_value(conf->disable_symlinks_from,
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
3977 prev->disable_symlinks_from, NULL);
4477
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
3978 #endif
7033faf6dc3c Added disable_symlinks directive.
Andrey Belov <defan@nginx.com>
parents: 4474
diff changeset
3979
71
59229033ae93 nginx-0.0.1-2003-04-08-19:40:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
3980 return NGX_CONF_OK;
59229033ae93 nginx-0.0.1-2003-04-08-19:40:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
3981 }
59229033ae93 nginx-0.0.1-2003-04-08-19:40:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 69
diff changeset
3982
88
674d333f4296 nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
3983
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3984 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
3985 ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
54
27b628ef907e nginx-0.0.1-2003-01-28-18:56:37 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
3986 {
3217
a22bf524a456 refactor http listen code:
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
3987 ngx_http_core_srv_conf_t *cscf = conf;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
3988
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
3989 ngx_str_t *value, size;
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
3990 ngx_url_t u;
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
3991 ngx_uint_t n;
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
3992 ngx_http_listen_opt_t lsopt;
3217
a22bf524a456 refactor http listen code:
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
3993
a22bf524a456 refactor http listen code:
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
3994 cscf->listen = 1;
89
29bf798b583f nginx-0.0.1-2003-05-15-19:42:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 88
diff changeset
3995
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
3996 value = cf->args->elts;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
3997
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
3998 ngx_memzero(&u, sizeof(ngx_url_t));
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
3999
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
4000 u.url = value[1];
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
4001 u.listen = 1;
906
a0310ac2814f rewritten upstream
Igor Sysoev <igor@sysoev.ru>
parents: 844
diff changeset
4002 u.default_port = 80;
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
4003
1559
fe11e2a3946d use pool instead of ngx_conf_t
Igor Sysoev <igor@sysoev.ru>
parents: 1546
diff changeset
4004 if (ngx_parse_url(cf->pool, &u) != NGX_OK) {
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
4005 if (u.err) {
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
4006 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
4007 "%s in \"%V\" of the \"listen\" directive",
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
4008 u.err, &u.url);
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
4009 }
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
4010
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
4011 return NGX_CONF_ERROR;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4012 }
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4013
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4014 ngx_memzero(&lsopt, sizeof(ngx_http_listen_opt_t));
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4015
3395
4e15548b29d4 fix building by gcc 4.4 with -O2/3/s:
Igor Sysoev <igor@sysoev.ru>
parents: 3390
diff changeset
4016 ngx_memcpy(&lsopt.u.sockaddr, u.sockaddr, u.socklen);
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4017
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4018 lsopt.socklen = u.socklen;
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4019 lsopt.backlog = NGX_LISTEN_BACKLOG;
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4020 lsopt.rcvbuf = -1;
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4021 lsopt.sndbuf = -1;
3676
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4022 #if (NGX_HAVE_SETFIB)
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4023 lsopt.setfib = -1;
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4024 #endif
5456
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4025 #if (NGX_HAVE_TCP_FASTOPEN)
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4026 lsopt.fastopen = -1;
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4027 #endif
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4028 lsopt.wildcard = u.wildcard;
4771
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4768
diff changeset
4029 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4768
diff changeset
4030 lsopt.ipv6only = 1;
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4768
diff changeset
4031 #endif
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4032
5263
05ba5bce31e0 Core: extended ngx_sock_ntop() with socklen parameter.
Vladimir Homutov <vl@nginx.com>
parents: 5254
diff changeset
4033 (void) ngx_sock_ntop(&lsopt.u.sockaddr, lsopt.socklen, lsopt.addr,
2512
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2503
diff changeset
4034 NGX_SOCKADDR_STRLEN, 1);
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4035
3224
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4036 for (n = 2; n < cf->args->nelts; n++) {
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4037
3225
f649453396f5 listen default_server parameter
Igor Sysoev <igor@sysoev.ru>
parents: 3224
diff changeset
4038 if (ngx_strcmp(value[n].data, "default_server") == 0
f649453396f5 listen default_server parameter
Igor Sysoev <igor@sysoev.ru>
parents: 3224
diff changeset
4039 || ngx_strcmp(value[n].data, "default") == 0)
f649453396f5 listen default_server parameter
Igor Sysoev <igor@sysoev.ru>
parents: 3224
diff changeset
4040 {
3224
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4041 lsopt.default_server = 1;
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4042 continue;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4043 }
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4044
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4045 if (ngx_strcmp(value[n].data, "bind") == 0) {
3224
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4046 lsopt.set = 1;
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4047 lsopt.bind = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4048 continue;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4049 }
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4050
3676
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4051 #if (NGX_HAVE_SETFIB)
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4052 if (ngx_strncmp(value[n].data, "setfib=", 7) == 0) {
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4053 lsopt.setfib = ngx_atoi(value[n].data + 7, value[n].len - 7);
5455
8f2c69418045 Fixed "setfib=" on non-first listening socket.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5428
diff changeset
4054 lsopt.set = 1;
8f2c69418045 Fixed "setfib=" on non-first listening socket.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5428
diff changeset
4055 lsopt.bind = 1;
3676
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4056
3687
3fef0312aec8 allow setfib=0
Igor Sysoev <igor@sysoev.ru>
parents: 3676
diff changeset
4057 if (lsopt.setfib == NGX_ERROR) {
3676
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4058 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4059 "invalid setfib \"%V\"", &value[n]);
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4060 return NGX_CONF_ERROR;
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4061 }
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4062
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4063 continue;
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4064 }
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3662
diff changeset
4065 #endif
5456
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4066
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4067 #if (NGX_HAVE_TCP_FASTOPEN)
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4068 if (ngx_strncmp(value[n].data, "fastopen=", 9) == 0) {
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4069 lsopt.fastopen = ngx_atoi(value[n].data + 9, value[n].len - 9);
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4070 lsopt.set = 1;
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4071 lsopt.bind = 1;
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4072
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4073 if (lsopt.fastopen == NGX_ERROR) {
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4074 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4075 "invalid fastopen \"%V\"", &value[n]);
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4076 return NGX_CONF_ERROR;
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4077 }
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4078
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4079 continue;
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4080 }
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4081 #endif
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5455
diff changeset
4082
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4083 if (ngx_strncmp(value[n].data, "backlog=", 8) == 0) {
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4084 lsopt.backlog = ngx_atoi(value[n].data + 8, value[n].len - 8);
3224
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4085 lsopt.set = 1;
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4086 lsopt.bind = 1;
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4087
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4088 if (lsopt.backlog == NGX_ERROR || lsopt.backlog == 0) {
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4089 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4090 "invalid backlog \"%V\"", &value[n]);
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4091 return NGX_CONF_ERROR;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4092 }
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4093
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4094 continue;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4095 }
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4096
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4097 if (ngx_strncmp(value[n].data, "rcvbuf=", 7) == 0) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4098 size.len = value[n].len - 7;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4099 size.data = value[n].data + 7;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4100
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4101 lsopt.rcvbuf = ngx_parse_size(&size);
3224
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4102 lsopt.set = 1;
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4103 lsopt.bind = 1;
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4104
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4105 if (lsopt.rcvbuf == NGX_ERROR) {
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4106 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4107 "invalid rcvbuf \"%V\"", &value[n]);
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4108 return NGX_CONF_ERROR;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4109 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4110
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4111 continue;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4112 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4113
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4114 if (ngx_strncmp(value[n].data, "sndbuf=", 7) == 0) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4115 size.len = value[n].len - 7;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4116 size.data = value[n].data + 7;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4117
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4118 lsopt.sndbuf = ngx_parse_size(&size);
3224
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4119 lsopt.set = 1;
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4120 lsopt.bind = 1;
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4121
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4122 if (lsopt.sndbuf == NGX_ERROR) {
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4123 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4124 "invalid sndbuf \"%V\"", &value[n]);
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4125 return NGX_CONF_ERROR;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4126 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4127
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4128 continue;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4129 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4130
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
4131 if (ngx_strncmp(value[n].data, "accept_filter=", 14) == 0) {
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4132 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4133 lsopt.accept_filter = (char *) &value[n].data[14];
3224
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4134 lsopt.set = 1;
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4135 lsopt.bind = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4136 #else
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4137 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4138 "accept filters \"%V\" are not supported "
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4139 "on this platform, ignored",
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4140 &value[n]);
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4141 #endif
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4142 continue;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4143 }
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4144
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4145 if (ngx_strcmp(value[n].data, "deferred") == 0) {
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4146 #if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4147 lsopt.deferred_accept = 1;
3224
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4148 lsopt.set = 1;
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4149 lsopt.bind = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4150 #else
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4151 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4152 "the deferred accept is not supported "
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4153 "on this platform, ignored");
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4154 #endif
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4155 continue;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
4156 }
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
4157
2562
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4158 if (ngx_strncmp(value[n].data, "ipv6only=o", 10) == 0) {
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4159 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4160 struct sockaddr *sa;
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4161
3395
4e15548b29d4 fix building by gcc 4.4 with -O2/3/s:
Igor Sysoev <igor@sysoev.ru>
parents: 3390
diff changeset
4162 sa = &lsopt.u.sockaddr;
2562
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4163
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4164 if (sa->sa_family == AF_INET6) {
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4165
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4166 if (ngx_strcmp(&value[n].data[10], "n") == 0) {
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4167 lsopt.ipv6only = 1;
2562
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4168
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4169 } else if (ngx_strcmp(&value[n].data[10], "ff") == 0) {
4771
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4768
diff changeset
4170 lsopt.ipv6only = 0;
2562
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4171
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4172 } else {
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4173 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4174 "invalid ipv6only flags \"%s\"",
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4175 &value[n].data[9]);
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4176 return NGX_CONF_ERROR;
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4177 }
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4178
3224
8e76e636ae3b allow to set listen options in any server
Igor Sysoev <igor@sysoev.ru>
parents: 3221
diff changeset
4179 lsopt.set = 1;
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4180 lsopt.bind = 1;
2562
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4181
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4182 } else {
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4183 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4184 "ipv6only is not supported "
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4185 "on addr \"%s\", ignored", lsopt.addr);
2562
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4186 }
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4187
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4188 continue;
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4189 #else
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4190 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
4191 "ipv6only is not supported "
2562
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4192 "on this platform");
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4193 return NGX_CONF_ERROR;
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4194 #endif
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4195 }
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2556
diff changeset
4196
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4197 if (ngx_strcmp(value[n].data, "ssl") == 0) {
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4198 #if (NGX_HTTP_SSL)
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4199 lsopt.ssl = 1;
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4200 continue;
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4201 #else
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4202 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4203 "the \"ssl\" parameter requires "
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4204 "ngx_http_ssl_module");
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4205 return NGX_CONF_ERROR;
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4206 #endif
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4207 }
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2205
diff changeset
4208
5121
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4209 if (ngx_strcmp(value[n].data, "spdy") == 0) {
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4210 #if (NGX_HTTP_SPDY)
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4211 lsopt.spdy = 1;
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4212 continue;
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4213 #else
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4214 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4215 "the \"spdy\" parameter requires "
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4216 "ngx_http_spdy_module");
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4217 return NGX_CONF_ERROR;
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4218 #endif
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4219 }
c0f7b94e88ba Preliminary experimental support for SPDY draft 2.
Valentin Bartenev <vbart@nginx.com>
parents: 5086
diff changeset
4220
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4221 if (ngx_strncmp(value[n].data, "so_keepalive=", 13) == 0) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4222
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4223 if (ngx_strcmp(&value[n].data[13], "on") == 0) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4224 lsopt.so_keepalive = 1;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4225
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4226 } else if (ngx_strcmp(&value[n].data[13], "off") == 0) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4227 lsopt.so_keepalive = 2;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4228
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4229 } else {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4230
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4231 #if (NGX_HAVE_KEEPALIVE_TUNABLE)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4232 u_char *p, *end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4233 ngx_str_t s;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4234
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4235 end = value[n].data + value[n].len;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4236 s.data = value[n].data + 13;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4237
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4238 p = ngx_strlchr(s.data, end, ':');
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4239 if (p == NULL) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4240 p = end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4241 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4242
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4243 if (p > s.data) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4244 s.len = p - s.data;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4245
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4246 lsopt.tcp_keepidle = ngx_parse_time(&s, 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4472
diff changeset
4247 if (lsopt.tcp_keepidle == (time_t) NGX_ERROR) {
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4248 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4249 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4250 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4251
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4252 s.data = (p < end) ? (p + 1) : end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4253
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4254 p = ngx_strlchr(s.data, end, ':');
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4255 if (p == NULL) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4256 p = end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4257 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4258
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4259 if (p > s.data) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4260 s.len = p - s.data;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4261
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4262 lsopt.tcp_keepintvl = ngx_parse_time(&s, 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4472
diff changeset
4263 if (lsopt.tcp_keepintvl == (time_t) NGX_ERROR) {
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4264 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4265 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4266 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4267
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4268 s.data = (p < end) ? (p + 1) : end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4269
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4270 if (s.data < end) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4271 s.len = end - s.data;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4272
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4273 lsopt.tcp_keepcnt = ngx_atoi(s.data, s.len);
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4274 if (lsopt.tcp_keepcnt == NGX_ERROR) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4275 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4276 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4277 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4278
4522
14411ee4d89f Whitespace fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4495
diff changeset
4279 if (lsopt.tcp_keepidle == 0 && lsopt.tcp_keepintvl == 0
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4280 && lsopt.tcp_keepcnt == 0)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4281 {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4282 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4283 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4284
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4285 lsopt.so_keepalive = 1;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4286
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4287 #else
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4288
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4289 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4290 "the \"so_keepalive\" parameter accepts "
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4291 "only \"on\" or \"off\" on this platform");
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4292 return NGX_CONF_ERROR;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4293
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4294 #endif
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4295 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4296
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4297 lsopt.set = 1;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4298 lsopt.bind = 1;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4299
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4300 continue;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4301
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4302 #if (NGX_HAVE_KEEPALIVE_TUNABLE)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4303 invalid_so_keepalive:
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4304
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4305 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4306 "invalid so_keepalive value: \"%s\"",
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4307 &value[n].data[13]);
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4308 return NGX_CONF_ERROR;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4309 #endif
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4310 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4300
diff changeset
4311
5605
3a72b1805c52 Added server-side support for PROXY protocol v1 (ticket #355).
Roman Arutyunyan <arut@nginx.com>
parents: 5584
diff changeset
4312 if (ngx_strcmp(value[n].data, "proxy_protocol") == 0) {
3a72b1805c52 Added server-side support for PROXY protocol v1 (ticket #355).
Roman Arutyunyan <arut@nginx.com>
parents: 5584
diff changeset
4313 lsopt.proxy_protocol = 1;
3a72b1805c52 Added server-side support for PROXY protocol v1 (ticket #355).
Roman Arutyunyan <arut@nginx.com>
parents: 5584
diff changeset
4314 continue;
3a72b1805c52 Added server-side support for PROXY protocol v1 (ticket #355).
Roman Arutyunyan <arut@nginx.com>
parents: 5584
diff changeset
4315 }
3a72b1805c52 Added server-side support for PROXY protocol v1 (ticket #355).
Roman Arutyunyan <arut@nginx.com>
parents: 5584
diff changeset
4316
118
5bf52498665c nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
4317 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
4318 "invalid parameter \"%V\"", &value[n]);
118
5bf52498665c nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
4319 return NGX_CONF_ERROR;
54
27b628ef907e nginx-0.0.1-2003-01-28-18:56:37 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
4320 }
27b628ef907e nginx-0.0.1-2003-01-28-18:56:37 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
4321
3220
cdcd9e29c589 *) move sockaddr to the listen options
Igor Sysoev <igor@sysoev.ru>
parents: 3219
diff changeset
4322 if (ngx_http_add_listen(cf, cscf, &lsopt) == NGX_OK) {
3217
a22bf524a456 refactor http listen code:
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
4323 return NGX_CONF_OK;
a22bf524a456 refactor http listen code:
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
4324 }
a22bf524a456 refactor http listen code:
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
4325
a22bf524a456 refactor http listen code:
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
4326 return NGX_CONF_ERROR;
54
27b628ef907e nginx-0.0.1-2003-01-28-18:56:37 import
Igor Sysoev <igor@sysoev.ru>
parents: 47
diff changeset
4327 }
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
4328
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
4329
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
4330 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
4331 ngx_http_core_server_name(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
4332 {
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4333 ngx_http_core_srv_conf_t *cscf = conf;
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4334
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4335 u_char ch;
3853
57d2533f98b3 move setting conf->server_name in merge phase
Igor Sysoev <igor@sysoev.ru>
parents: 3846
diff changeset
4336 ngx_str_t *value;
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4337 ngx_uint_t i;
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4338 ngx_http_server_name_t *sn;
369
9c2515d70489 nginx-0.0.7-2004-06-25-18:42:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
4339
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
4340 value = cf->args->elts;
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
4341
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4342 for (i = 1; i < cf->args->nelts; i++) {
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4343
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4344 ch = value[i].data[0];
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4345
2195
a953f73273ee server_name "" support
Igor Sysoev <igor@sysoev.ru>
parents: 2186
diff changeset
4346 if ((ch == '*' && (value[i].len < 3 || value[i].data[1] != '.'))
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4347 || (ch == '.' && value[i].len < 2))
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4348 {
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4349 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4350 "server name \"%V\" is invalid", &value[i]);
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4351 return NGX_CONF_ERROR;
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4352 }
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4353
1157
a4820184a618 *) introduce ngx_strchr()
Igor Sysoev <igor@sysoev.ru>
parents: 1156
diff changeset
4354 if (ngx_strchr(value[i].data, '/')) {
a4820184a618 *) introduce ngx_strchr()
Igor Sysoev <igor@sysoev.ru>
parents: 1156
diff changeset
4355 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
4356 "server name \"%V\" has suspicious symbols",
1157
a4820184a618 *) introduce ngx_strchr()
Igor Sysoev <igor@sysoev.ru>
parents: 1156
diff changeset
4357 &value[i]);
a4820184a618 *) introduce ngx_strchr()
Igor Sysoev <igor@sysoev.ru>
parents: 1156
diff changeset
4358 }
a4820184a618 *) introduce ngx_strchr()
Igor Sysoev <igor@sysoev.ru>
parents: 1156
diff changeset
4359
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
4360 sn = ngx_array_push(&cscf->server_names);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
4361 if (sn == NULL) {
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
4362 return NGX_CONF_ERROR;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
4363 }
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
4364
1387
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4365 #if (NGX_PCRE)
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4366 sn->regex = NULL;
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4367 #endif
3221
c8de5a8b6d17 rename core_srv_conf fields to more understandable default_server and server
Igor Sysoev <igor@sysoev.ru>
parents: 3220
diff changeset
4368 sn->server = cscf;
3855
6c5f2ba0397d server_name $hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3853
diff changeset
4369
6c5f2ba0397d server_name $hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3853
diff changeset
4370 if (ngx_strcasecmp(value[i].data, (u_char *) "$hostname") == 0) {
6c5f2ba0397d server_name $hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3853
diff changeset
4371 sn->name = cf->cycle->hostname;
6c5f2ba0397d server_name $hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3853
diff changeset
4372
6c5f2ba0397d server_name $hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3853
diff changeset
4373 } else {
6c5f2ba0397d server_name $hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3853
diff changeset
4374 sn->name = value[i];
6c5f2ba0397d server_name $hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3853
diff changeset
4375 }
1387
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4376
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4377 if (value[i].data[0] != '~') {
3368
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4378 ngx_strlow(sn->name.data, sn->name.data, sn->name.len);
1387
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4379 continue;
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4380 }
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4381
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4382 #if (NGX_PCRE)
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1683
diff changeset
4383 {
3368
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4384 u_char *p;
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4385 ngx_regex_compile_t rc;
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4386 u_char errstr[NGX_MAX_CONF_ERRSTR];
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1683
diff changeset
4387
3122
3e994ac670dc test space between "~" and regex in server_name and invalid_referers
Igor Sysoev <igor@sysoev.ru>
parents: 3114
diff changeset
4388 if (value[i].len == 1) {
3e994ac670dc test space between "~" and regex in server_name and invalid_referers
Igor Sysoev <igor@sysoev.ru>
parents: 3114
diff changeset
4389 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3e994ac670dc test space between "~" and regex in server_name and invalid_referers
Igor Sysoev <igor@sysoev.ru>
parents: 3114
diff changeset
4390 "empty regex in server name \"%V\"", &value[i]);
3e994ac670dc test space between "~" and regex in server_name and invalid_referers
Igor Sysoev <igor@sysoev.ru>
parents: 3114
diff changeset
4391 return NGX_CONF_ERROR;
3e994ac670dc test space between "~" and regex in server_name and invalid_referers
Igor Sysoev <igor@sysoev.ru>
parents: 3114
diff changeset
4392 }
3e994ac670dc test space between "~" and regex in server_name and invalid_referers
Igor Sysoev <igor@sysoev.ru>
parents: 3114
diff changeset
4393
1387
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4394 value[i].len--;
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4395 value[i].data++;
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4396
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
4397 ngx_memzero(&rc, sizeof(ngx_regex_compile_t));
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
4398
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
4399 rc.pattern = value[i];
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
4400 rc.err.len = NGX_MAX_CONF_ERRSTR;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
4401 rc.err.data = errstr;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
4402
3368
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4403 for (p = value[i].data; p < value[i].data + value[i].len; p++) {
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4404 if (*p >= 'A' && *p <= 'Z') {
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4405 rc.options = NGX_REGEX_CASELESS;
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4406 break;
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4407 }
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4408 }
75b96847351a fix server_name regex named captures given by "?P<...>"
Igor Sysoev <igor@sysoev.ru>
parents: 3345
diff changeset
4409
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
4410 sn->regex = ngx_http_regex_compile(cf, &rc);
1387
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4411 if (sn->regex == NULL) {
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4412 return NGX_CONF_ERROR;
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4413 }
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4414
1781
bfb66d7c2b42 optimization
Igor Sysoev <igor@sysoev.ru>
parents: 1780
diff changeset
4415 sn->name = value[i];
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
4416 cscf->captures = (rc.captures > 0);
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1683
diff changeset
4417 }
1387
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4418 #else
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4419 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
4420 "using regex \"%V\" "
1387
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4421 "requires PCRE library", &value[i]);
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4422
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4423 return NGX_CONF_ERROR;
cb8b30ef3e7e regex in server_name
Igor Sysoev <igor@sysoev.ru>
parents: 1386
diff changeset
4424 #endif
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
4425 }
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
4426
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
4427 return NGX_CONF_OK;
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
4428 }
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
4429
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
4430
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
4431 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
4432 ngx_http_core_root(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4433 {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4434 ngx_http_core_loc_conf_t *clcf = conf;
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4435
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
4436 ngx_str_t *value;
3535
abb3901be800 fix handling an inherited alias in inclusive location
Igor Sysoev <igor@sysoev.ru>
parents: 3534
diff changeset
4437 ngx_int_t alias;
abb3901be800 fix handling an inherited alias in inclusive location
Igor Sysoev <igor@sysoev.ru>
parents: 3534
diff changeset
4438 ngx_uint_t n;
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
4439 ngx_http_script_compile_t sc;
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4440
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4441 alias = (cmd->name.len == sizeof("alias") - 1) ? 1 : 0;
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4442
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4443 if (clcf->root.data) {
300
502b03d9d2a3 nginx-0.0.3-2004-03-31-00:31:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 297
diff changeset
4444
3535
abb3901be800 fix handling an inherited alias in inclusive location
Igor Sysoev <igor@sysoev.ru>
parents: 3534
diff changeset
4445 if ((clcf->alias != 0) == alias) {
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4446 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
4447 "\"%V\" directive is duplicate",
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
4448 &cmd->name);
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4449 } else {
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4450 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
4451 "\"%V\" directive is duplicate, "
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
4452 "\"%s\" directive was specified earlier",
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4453 &cmd->name, clcf->alias ? "alias" : "root");
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4454 }
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4455
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4456 return NGX_CONF_ERROR;
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4457 }
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4458
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4459 if (clcf->named && alias) {
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
4460 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
4461 "the \"alias\" directive cannot be used "
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
4462 "inside the named location");
1353
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
4463
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
4464 return NGX_CONF_ERROR;
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
4465 }
7443fbe0b013 named location
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
4466
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4467 value = cf->args->elts;
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4468
1156
a9005d2e2c99 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1155
diff changeset
4469 if (ngx_strstr(value[1].data, "$document_root")
a9005d2e2c99 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1155
diff changeset
4470 || ngx_strstr(value[1].data, "${document_root}"))
1155
39a3aa08eefe disable $document_root variable in the "root/alias" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1149
diff changeset
4471 {
39a3aa08eefe disable $document_root variable in the "root/alias" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1149
diff changeset
4472 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
4473 "the $document_root variable cannot be used "
1155
39a3aa08eefe disable $document_root variable in the "root/alias" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1149
diff changeset
4474 "in the \"%V\" directive",
39a3aa08eefe disable $document_root variable in the "root/alias" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1149
diff changeset
4475 &cmd->name);
39a3aa08eefe disable $document_root variable in the "root/alias" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1149
diff changeset
4476
39a3aa08eefe disable $document_root variable in the "root/alias" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1149
diff changeset
4477 return NGX_CONF_ERROR;
39a3aa08eefe disable $document_root variable in the "root/alias" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1149
diff changeset
4478 }
39a3aa08eefe disable $document_root variable in the "root/alias" directive
Igor Sysoev <igor@sysoev.ru>
parents: 1149
diff changeset
4479
2263
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4480 if (ngx_strstr(value[1].data, "$realpath_root")
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4481 || ngx_strstr(value[1].data, "${realpath_root}"))
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4482 {
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4483 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4131
1b05b9bbcebf Overhauled diagnostic messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4062
diff changeset
4484 "the $realpath_root variable cannot be used "
2263
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4485 "in the \"%V\" directive",
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4486 &cmd->name);
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4487
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4488 return NGX_CONF_ERROR;
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4489 }
41b51261b726 disable $realpath_root variable in a "root" directive
Igor Sysoev <igor@sysoev.ru>
parents: 2261
diff changeset
4490
3535
abb3901be800 fix handling an inherited alias in inclusive location
Igor Sysoev <igor@sysoev.ru>
parents: 3534
diff changeset
4491 clcf->alias = alias ? clcf->name.len : 0;
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4492 clcf->root = value[1];
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4493
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4494 if (!alias && clcf->root.data[clcf->root.len - 1] == '/') {
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4495 clcf->root.len--;
411
4765ded59eaa nginx-0.0.10-2004-08-30-23:24:51 import
Igor Sysoev <igor@sysoev.ru>
parents: 404
diff changeset
4496 }
4765ded59eaa nginx-0.0.10-2004-08-30-23:24:51 import
Igor Sysoev <igor@sysoev.ru>
parents: 404
diff changeset
4497
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4498 if (clcf->root.data[0] != '$') {
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5317
diff changeset
4499 if (ngx_conf_full_name(cf->cycle, &clcf->root, 0) != NGX_OK) {
667
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
4500 return NGX_CONF_ERROR;
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
4501 }
603
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
4502 }
858700ae46b4 nginx-0.3.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 597
diff changeset
4503
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4504 n = ngx_http_script_variables_count(&clcf->root);
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
4505
2548
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4506 ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
3749
3ee39f593642 if a location is specified by regex, then always compile an "alias",
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
4507 sc.variables = n;
3ee39f593642 if a location is specified by regex, then always compile an "alias",
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
4508
3ee39f593642 if a location is specified by regex, then always compile an "alias",
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
4509 #if (NGX_PCRE)
3ee39f593642 if a location is specified by regex, then always compile an "alias",
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
4510 if (alias && clcf->regex) {
5697
c985d90a8d1f Fixed alias in regex locations with limit_except/if.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5651
diff changeset
4511 clcf->alias = NGX_MAX_SIZE_T_VALUE;
3749
3ee39f593642 if a location is specified by regex, then always compile an "alias",
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
4512 n = 1;
3ee39f593642 if a location is specified by regex, then always compile an "alias",
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
4513 }
3ee39f593642 if a location is specified by regex, then always compile an "alias",
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
4514 #endif
2548
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4515
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4516 if (n) {
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4517 sc.cf = cf;
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4518 sc.source = &clcf->root;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4519 sc.lengths = &clcf->root_lengths;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4520 sc.values = &clcf->root_values;
2548
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4521 sc.complete_lengths = 1;
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4522 sc.complete_values = 1;
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4523
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4524 if (ngx_http_script_compile(&sc) != NGX_OK) {
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4525 return NGX_CONF_ERROR;
163114282d2c captures support in location and alias
Igor Sysoev <igor@sysoev.ru>
parents: 2541
diff changeset
4526 }
595
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
4527 }
ebc68d8ca496 nginx-0.3.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
4528
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4529 return NGX_CONF_OK;
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4530 }
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4531
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 287
diff changeset
4532
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4533 static ngx_http_method_name_t ngx_methods_names[] = {
1107
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4534 { (u_char *) "GET", (uint32_t) ~NGX_HTTP_GET },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4535 { (u_char *) "HEAD", (uint32_t) ~NGX_HTTP_HEAD },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4536 { (u_char *) "POST", (uint32_t) ~NGX_HTTP_POST },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4537 { (u_char *) "PUT", (uint32_t) ~NGX_HTTP_PUT },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4538 { (u_char *) "DELETE", (uint32_t) ~NGX_HTTP_DELETE },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4539 { (u_char *) "MKCOL", (uint32_t) ~NGX_HTTP_MKCOL },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4540 { (u_char *) "COPY", (uint32_t) ~NGX_HTTP_COPY },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4541 { (u_char *) "MOVE", (uint32_t) ~NGX_HTTP_MOVE },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4542 { (u_char *) "OPTIONS", (uint32_t) ~NGX_HTTP_OPTIONS },
5266
Maxim Dounin <mdounin@mdounin.ru>
parents: 5263
diff changeset
4543 { (u_char *) "PROPFIND", (uint32_t) ~NGX_HTTP_PROPFIND },
1107
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4544 { (u_char *) "PROPPATCH", (uint32_t) ~NGX_HTTP_PROPPATCH },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4545 { (u_char *) "LOCK", (uint32_t) ~NGX_HTTP_LOCK },
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1075
diff changeset
4546 { (u_char *) "UNLOCK", (uint32_t) ~NGX_HTTP_UNLOCK },
3613
64bd39f03182 PATCH method
Igor Sysoev <igor@sysoev.ru>
parents: 3535
diff changeset
4547 { (u_char *) "PATCH", (uint32_t) ~NGX_HTTP_PATCH },
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4548 { NULL, 0 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4549 };
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4550
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4551
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4552 static char *
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4553 ngx_http_core_limit_except(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4554 {
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4555 ngx_http_core_loc_conf_t *pclcf = conf;
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4556
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4557 char *rv;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4558 void *mconf;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4559 ngx_str_t *value;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4560 ngx_uint_t i;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4561 ngx_conf_t save;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4562 ngx_http_module_t *module;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4563 ngx_http_conf_ctx_t *ctx, *pctx;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4564 ngx_http_method_name_t *name;
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4565 ngx_http_core_loc_conf_t *clcf;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4566
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4567 if (pclcf->limit_except) {
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4568 return "duplicate";
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4569 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4570
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4571 pclcf->limit_except = 0xffffffff;
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4572
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4573 value = cf->args->elts;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4574
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4575 for (i = 1; i < cf->args->nelts; i++) {
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4576 for (name = ngx_methods_names; name->name; name++) {
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4577
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4578 if (ngx_strcasecmp(value[i].data, name->name) == 0) {
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4579 pclcf->limit_except &= name->method;
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4580 goto next;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4581 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4582 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4583
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4584 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4585 "invalid method \"%V\"", &value[i]);
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4586 return NGX_CONF_ERROR;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4587
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4588 next:
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4589 continue;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4590 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4591
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4592 if (!(pclcf->limit_except & NGX_HTTP_GET)) {
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4593 pclcf->limit_except &= (uint32_t) ~NGX_HTTP_HEAD;
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4594 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4595
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4596 ctx = ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t));
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4597 if (ctx == NULL) {
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4598 return NGX_CONF_ERROR;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4599 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4600
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4601 pctx = cf->ctx;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4602 ctx->main_conf = pctx->main_conf;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4603 ctx->srv_conf = pctx->srv_conf;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4604
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4605 ctx->loc_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module);
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4606 if (ctx->loc_conf == NULL) {
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4607 return NGX_CONF_ERROR;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4608 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4609
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4610 for (i = 0; ngx_modules[i]; i++) {
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4611 if (ngx_modules[i]->type != NGX_HTTP_MODULE) {
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4612 continue;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4613 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4614
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4615 module = ngx_modules[i]->ctx;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4616
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4617 if (module->create_loc_conf) {
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4618
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4619 mconf = module->create_loc_conf(cf);
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4620 if (mconf == NULL) {
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4621 return NGX_CONF_ERROR;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4622 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4623
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4624 ctx->loc_conf[ngx_modules[i]->ctx_index] = mconf;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4625 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4626 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4627
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4628
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4629 clcf = ctx->loc_conf[ngx_http_core_module.ctx_index];
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4630 pclcf->limit_except_loc_conf = ctx->loc_conf;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4631 clcf->loc_conf = ctx->loc_conf;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4632 clcf->name = pclcf->name;
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4633 clcf->noname = 1;
3731
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3721
diff changeset
4634 clcf->lmt_excpt = 1;
2027
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4635
f321b59ae0e9 locations tree
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
4636 if (ngx_http_add_location(cf, &pclcf->locations, clcf) != NGX_OK) {
631
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4637 return NGX_CONF_ERROR;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4638 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4639
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4640 save = *cf;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4641 cf->ctx = ctx;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4642 cf->cmd_type = NGX_HTTP_LMT_CONF;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4643
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4644 rv = ngx_conf_parse(cf, NULL);
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4645
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4646 *cf = save;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4647
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4648 return rv;
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4649 }
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4650
5d2b8078c1c2 nginx-0.3.37-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 625
diff changeset
4651
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
4652 static char *
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4653 ngx_http_core_directio(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4654 {
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4655 ngx_http_core_loc_conf_t *clcf = conf;
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4656
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4657 ngx_str_t *value;
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4658
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4659 if (clcf->directio != NGX_CONF_UNSET) {
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4660 return "is duplicate";
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4661 }
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4662
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4663 value = cf->args->elts;
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4664
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4665 if (ngx_strcmp(value[1].data, "off") == 0) {
2277
732bf367dc08 NGX_OPEN_FILE_DIRECTIO_OFF
Igor Sysoev <igor@sysoev.ru>
parents: 2263
diff changeset
4666 clcf->directio = NGX_OPEN_FILE_DIRECTIO_OFF;
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4667 return NGX_CONF_OK;
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4668 }
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4669
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4670 clcf->directio = ngx_parse_offset(&value[1]);
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4671 if (clcf->directio == (off_t) NGX_ERROR) {
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4672 return "invalid value";
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4673 }
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4674
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4675 return NGX_CONF_OK;
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4676 }
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4677
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4678
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
4679 static char *
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
4680 ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4681 {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4682 ngx_http_core_loc_conf_t *clcf = conf;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4683
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4684 u_char *p;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4685 ngx_int_t overwrite;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4686 ngx_str_t *value, uri, args;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4687 ngx_uint_t i, n;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4688 ngx_http_err_page_t *err;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4689 ngx_http_complex_value_t cv;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4690 ngx_http_compile_complex_value_t ccv;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4691
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4692 if (clcf->error_pages == NULL) {
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4693 clcf->error_pages = ngx_array_create(cf->pool, 4,
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4694 sizeof(ngx_http_err_page_t));
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4695 if (clcf->error_pages == NULL) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4696 return NGX_CONF_ERROR;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4697 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4698 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4699
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4700 value = cf->args->elts;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4701
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4702 i = cf->args->nelts - 2;
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4703
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4704 if (value[i].data[0] == '=') {
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4705 if (i == 1) {
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4706 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
4707 "invalid value \"%V\"", &value[i]);
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4708 return NGX_CONF_ERROR;
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4709 }
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4710
555
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4711 if (value[i].len > 1) {
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4712 overwrite = ngx_atoi(&value[i].data[1], value[i].len - 1);
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4713
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4714 if (overwrite == NGX_ERROR) {
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4715 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4716 "invalid value \"%V\"", &value[i]);
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4717 return NGX_CONF_ERROR;
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4718 }
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4719
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4720 } else {
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4721 overwrite = 0;
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4722 }
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4723
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4724 n = 2;
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4725
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4726 } else {
555
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4727 overwrite = -1;
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4728 n = 1;
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4729 }
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4730
673
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
4731 uri = value[cf->args->nelts - 1];
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4732
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4733 ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4734
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4735 ccv.cf = cf;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4736 ccv.value = &uri;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4737 ccv.complex_value = &cv;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4738
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4739 if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4740 return NGX_CONF_ERROR;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4741 }
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4742
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3484
diff changeset
4743 ngx_str_null(&args);
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4744
4947
4251e72b8bb4 Allow the complex value to be defined as an empty string.
Ruslan Ermilov <ru@nginx.com>
parents: 4930
diff changeset
4745 if (cv.lengths == NULL && uri.len && uri.data[0] == '/') {
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4746 p = (u_char *) ngx_strchr(uri.data, '?');
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4747
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4748 if (p) {
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4749 cv.value.len = p - uri.data;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4750 cv.value.data = uri.data;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4751 p++;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4752 args.len = (uri.data + uri.len) - p;
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4753 args.data = p;
673
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
4754 }
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
4755 }
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
4756
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4757 for (i = 1; i < cf->args->nelts - n; i++) {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4758 err = ngx_array_push(clcf->error_pages);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
4759 if (err == NULL) {
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4760 return NGX_CONF_ERROR;
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4761 }
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
4762
326
8733703a37f3 nginx-0.0.3-2004-04-26-00:13:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 323
diff changeset
4763 err->status = ngx_atoi(value[i].data, value[i].len);
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
4764
715
cbd18f013385 disable "error_page 499 ..."
Igor Sysoev <igor@sysoev.ru>
parents: 681
diff changeset
4765 if (err->status == NGX_ERROR || err->status == 499) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4766 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
4767 "invalid value \"%V\"", &value[i]);
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4768 return NGX_CONF_ERROR;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4769 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4770
3401
9e7926763f87 allow to handle 301/302 in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3395
diff changeset
4771 if (err->status < 300 || err->status > 599) {
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4772 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3401
9e7926763f87 allow to handle 301/302 in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3395
diff changeset
4773 "value \"%V\" must be between 300 and 599",
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
4774 &value[i]);
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4775 return NGX_CONF_ERROR;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4776 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4777
3781
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3775
diff changeset
4778 err->overwrite = overwrite;
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3775
diff changeset
4779
173a45374a97 allow override redirect status in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 3775
diff changeset
4780 if (overwrite == -1) {
1923
c72fe0a8d9b4 fix large memory allocation in "error_page 495-497 /uri"
Igor Sysoev <igor@sysoev.ru>
parents: 1919
diff changeset
4781 switch (err->status) {
c72fe0a8d9b4 fix large memory allocation in "error_page 495-497 /uri"
Igor Sysoev <igor@sysoev.ru>
parents: 1919
diff changeset
4782 case NGX_HTTP_TO_HTTPS:
c72fe0a8d9b4 fix large memory allocation in "error_page 495-497 /uri"
Igor Sysoev <igor@sysoev.ru>
parents: 1919
diff changeset
4783 case NGX_HTTPS_CERT_ERROR:
c72fe0a8d9b4 fix large memory allocation in "error_page 495-497 /uri"
Igor Sysoev <igor@sysoev.ru>
parents: 1919
diff changeset
4784 case NGX_HTTPS_NO_CERT:
c72fe0a8d9b4 fix large memory allocation in "error_page 495-497 /uri"
Igor Sysoev <igor@sysoev.ru>
parents: 1919
diff changeset
4785 err->overwrite = NGX_HTTP_BAD_REQUEST;
c72fe0a8d9b4 fix large memory allocation in "error_page 495-497 /uri"
Igor Sysoev <igor@sysoev.ru>
parents: 1919
diff changeset
4786 default:
c72fe0a8d9b4 fix large memory allocation in "error_page 495-497 /uri"
Igor Sysoev <igor@sysoev.ru>
parents: 1919
diff changeset
4787 break;
c72fe0a8d9b4 fix large memory allocation in "error_page 495-497 /uri"
Igor Sysoev <igor@sysoev.ru>
parents: 1919
diff changeset
4788 }
c72fe0a8d9b4 fix large memory allocation in "error_page 495-497 /uri"
Igor Sysoev <igor@sysoev.ru>
parents: 1919
diff changeset
4789 }
555
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 553
diff changeset
4790
2589
859f6675a553 use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents: 2586
diff changeset
4791 err->value = cv;
2591
7162ac8d564f style fix: remove tabs
Igor Sysoev <igor@sysoev.ru>
parents: 2589
diff changeset
4792 err->args = args;
176
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4793 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4794
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4795 return NGX_CONF_OK;
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4796 }
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4797
c0552e5ab567 nginx-0.0.1-2003-11-09-23:03:38 import; separate building
Igor Sysoev <igor@sysoev.ru>
parents: 170
diff changeset
4798
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
4799 static char *
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4800 ngx_http_core_try_files(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4801 {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4802 ngx_http_core_loc_conf_t *clcf = conf;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4803
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4804 ngx_str_t *value;
2695
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4805 ngx_int_t code;
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4806 ngx_uint_t i, n;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4807 ngx_http_try_file_t *tf;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4808 ngx_http_script_compile_t sc;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4809 ngx_http_core_main_conf_t *cmcf;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4810
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4811 if (clcf->try_files) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4812 return "is duplicate";
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4813 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4814
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4815 cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4816
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4817 cmcf->try_files = 1;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4818
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4819 tf = ngx_pcalloc(cf->pool, cf->args->nelts * sizeof(ngx_http_try_file_t));
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4820 if (tf == NULL) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4821 return NGX_CONF_ERROR;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4822 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4823
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4824 clcf->try_files = tf;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4825
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4826 value = cf->args->elts;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4827
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4828 for (i = 0; i < cf->args->nelts - 1; i++) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4829
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4830 tf[i].name = value[i + 1];
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4831
5339
ee2a4c68fb35 Fixed try_files with empty argument (ticket #390).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5334
diff changeset
4832 if (tf[i].name.len > 0
5715
790ba7484bb6 Fixed config parsing of the last try_files parameter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5697
diff changeset
4833 && tf[i].name.data[tf[i].name.len - 1] == '/'
790ba7484bb6 Fixed config parsing of the last try_files parameter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 5697
diff changeset
4834 && i + 2 < cf->args->nelts)
5339
ee2a4c68fb35 Fixed try_files with empty argument (ticket #390).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5334
diff changeset
4835 {
2458
43dcf8cc2cb1 allow directories in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2453
diff changeset
4836 tf[i].test_dir = 1;
43dcf8cc2cb1 allow directories in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2453
diff changeset
4837 tf[i].name.len--;
2584
91e287d78d90 fix directory test in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2579
diff changeset
4838 tf[i].name.data[tf[i].name.len] = '\0';
2458
43dcf8cc2cb1 allow directories in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2453
diff changeset
4839 }
43dcf8cc2cb1 allow directories in try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2453
diff changeset
4840
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4841 n = ngx_http_script_variables_count(&tf[i].name);
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4842
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4843 if (n) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4844 ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4845
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4846 sc.cf = cf;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4847 sc.source = &tf[i].name;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4848 sc.lengths = &tf[i].lengths;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4849 sc.values = &tf[i].values;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4850 sc.variables = n;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4851 sc.complete_lengths = 1;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4852 sc.complete_values = 1;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4853
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4854 if (ngx_http_script_compile(&sc) != NGX_OK) {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4855 return NGX_CONF_ERROR;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4856 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4857
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4858 } else {
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4859 /* add trailing '\0' to length */
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4860 tf[i].name.len++;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4861 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4862 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4863
2695
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4864 if (tf[i - 1].name.data[0] == '=') {
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4865
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4866 code = ngx_atoi(tf[i - 1].name.data + 1, tf[i - 1].name.len - 2);
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4867
4636
ed957e0daeb4 Capped the status code that may be returned with "return" and "try_files".
Ruslan Ermilov <ru@nginx.com>
parents: 4630
diff changeset
4868 if (code == NGX_ERROR || code > 999) {
2695
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4869 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4870 "invalid code \"%*s\"",
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4871 tf[i - 1].name.len - 1, tf[i - 1].name.data);
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4872 return NGX_CONF_ERROR;
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4873 }
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4874
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4875 tf[i].code = code;
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4876 }
aa95c69c3068 try_files status code
Igor Sysoev <igor@sysoev.ru>
parents: 2685
diff changeset
4877
2407
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4878 return NGX_CONF_OK;
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4879 }
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4880
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4881
16d1236bc298 try_files
Igor Sysoev <igor@sysoev.ru>
parents: 2404
diff changeset
4882 static char *
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4883 ngx_http_core_open_file_cache(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4884 {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4885 ngx_http_core_loc_conf_t *clcf = conf;
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4886
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4887 time_t inactive;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4888 ngx_str_t *value, s;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4889 ngx_int_t max;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4890 ngx_uint_t i;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4891
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4892 if (clcf->open_file_cache != NGX_CONF_UNSET_PTR) {
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4893 return "is duplicate";
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4894 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4895
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4896 value = cf->args->elts;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4897
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4898 max = 0;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4899 inactive = 60;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4900
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4901 for (i = 1; i < cf->args->nelts; i++) {
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4902
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4903 if (ngx_strncmp(value[i].data, "max=", 4) == 0) {
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4904
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4905 max = ngx_atoi(value[i].data + 4, value[i].len - 4);
4269
d9cffafbe944 Changed error message to be more appropriate in the imaginary
Ruslan Ermilov <ru@nginx.com>
parents: 4266
diff changeset
4906 if (max <= 0) {
2085
505af86ac9cb show an error message for invalid parameter
Igor Sysoev <igor@sysoev.ru>
parents: 2067
diff changeset
4907 goto failed;
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4908 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4909
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4910 continue;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4911 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4912
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4913 if (ngx_strncmp(value[i].data, "inactive=", 9) == 0) {
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4914
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4915 s.len = value[i].len - 9;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4916 s.data = value[i].data + 9;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4917
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4918 inactive = ngx_parse_time(&s, 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4472
diff changeset
4919 if (inactive == (time_t) NGX_ERROR) {
2085
505af86ac9cb show an error message for invalid parameter
Igor Sysoev <igor@sysoev.ru>
parents: 2067
diff changeset
4920 goto failed;
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4921 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4922
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4923 continue;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4924 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4925
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4926 if (ngx_strcmp(value[i].data, "off") == 0) {
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4927
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4928 clcf->open_file_cache = NULL;
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4929
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4930 continue;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4931 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4932
2085
505af86ac9cb show an error message for invalid parameter
Igor Sysoev <igor@sysoev.ru>
parents: 2067
diff changeset
4933 failed:
505af86ac9cb show an error message for invalid parameter
Igor Sysoev <igor@sysoev.ru>
parents: 2067
diff changeset
4934
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4935 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4936 "invalid \"open_file_cache\" parameter \"%V\"",
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4937 &value[i]);
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4938 return NGX_CONF_ERROR;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4939 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4940
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4941 if (clcf->open_file_cache == NULL) {
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4942 return NGX_CONF_OK;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4943 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4944
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4945 if (max == 0) {
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4946 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4522
14411ee4d89f Whitespace fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4495
diff changeset
4947 "\"open_file_cache\" must have the \"max\" parameter");
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4948 return NGX_CONF_ERROR;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4949 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4950
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4951 clcf->open_file_cache = ngx_open_file_cache_init(cf->pool, max, inactive);
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4952 if (clcf->open_file_cache) {
1454
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4953 return NGX_CONF_OK;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4954 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4955
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4956 return NGX_CONF_ERROR;
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4957 }
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4958
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4959
f497ed7682a7 open_file_cache in HTTP
Igor Sysoev <igor@sysoev.ru>
parents: 1403
diff changeset
4960 static char *
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
4961 ngx_http_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
4962 {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4963 ngx_http_core_loc_conf_t *clcf = conf;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
4964
5254
7ecaa9e4bf1b Core: support several "error_log" directives.
Vladimir Homutov <vl@nginx.com>
parents: 5240
diff changeset
4965 return ngx_log_set_log(cf, &clcf->error_log);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
4966 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
4967
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
4968
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
4969 static char *
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
4970 ngx_http_core_keepalive(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
429
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4971 {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4972 ngx_http_core_loc_conf_t *clcf = conf;
429
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4973
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4974 ngx_str_t *value;
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4975
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4976 if (clcf->keepalive_timeout != NGX_CONF_UNSET_MSEC) {
429
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4977 return "is duplicate";
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4978 }
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4979
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4980 value = cf->args->elts;
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4981
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4982 clcf->keepalive_timeout = ngx_parse_time(&value[1], 0);
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4983
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4984 if (clcf->keepalive_timeout == (ngx_msec_t) NGX_ERROR) {
429
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4985 return "invalid value";
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4986 }
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4987
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4988 if (cf->args->nelts == 2) {
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4989 return NGX_CONF_OK;
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4990 }
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4991
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4992 clcf->keepalive_header = ngx_parse_time(&value[2], 1);
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
4993
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4472
diff changeset
4994 if (clcf->keepalive_header == (time_t) NGX_ERROR) {
429
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4995 return "invalid value";
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4996 }
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4997
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4998 return NGX_CONF_OK;
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
4999 }
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
5000
694cd6cdb714 nginx-0.0.11-2004-09-17-20:07:35 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
5001
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
5002 static char *
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
5003 ngx_http_core_internal(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
5004 {
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
5005 ngx_http_core_loc_conf_t *clcf = conf;
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
5006
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
5007 if (clcf->internal != NGX_CONF_UNSET) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
5008 return "is duplicate";
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
5009 }
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
5010
3318
48402deff89a style fix: lcf > clcf
Igor Sysoev <igor@sysoev.ru>
parents: 3313
diff changeset
5011 clcf->internal = 1;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
5012
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
5013 return NGX_CONF_OK;
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
5014 }
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5015
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5016
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
5017 static char *
1652
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5018 ngx_http_core_resolver(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5019 {
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5020 ngx_http_core_loc_conf_t *clcf = conf;
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5021
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5022 ngx_str_t *value;
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5023
1919
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
5024 if (clcf->resolver) {
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
5025 return "is duplicate";
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
5026 }
dc0f5013f674 create dummy resolver in http context to inherit it in all servers
Igor Sysoev <igor@sysoev.ru>
parents: 1915
diff changeset
5027
1652
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5028 value = cf->args->elts;
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5029
4225
016352c19049 Support of several servers in the "resolver" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4210
diff changeset
5030 clcf->resolver = ngx_resolver_create(cf, &value[1], cf->args->nelts - 1);
016352c19049 Support of several servers in the "resolver" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 4210
diff changeset
5031 if (clcf->resolver == NULL) {
1652
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5032 return NGX_CONF_ERROR;
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5033 }
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5034
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5035 return NGX_CONF_OK;
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5036 }
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5037
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5038
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5039 #if (NGX_HTTP_GZIP)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5040
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5041 static char *
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5042 ngx_http_gzip_disable(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5043 {
2205
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5044 ngx_http_core_loc_conf_t *clcf = conf;
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5045
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5046 #if (NGX_PCRE)
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5047
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5048 ngx_str_t *value;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5049 ngx_uint_t i;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5050 ngx_regex_elt_t *re;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5051 ngx_regex_compile_t rc;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5052 u_char errstr[NGX_MAX_CONF_ERRSTR];
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5053
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5054 if (clcf->gzip_disable == NGX_CONF_UNSET_PTR) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5055 clcf->gzip_disable = ngx_array_create(cf->pool, 2,
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5056 sizeof(ngx_regex_elt_t));
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5057 if (clcf->gzip_disable == NULL) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5058 return NGX_CONF_ERROR;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5059 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5060 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5061
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5062 value = cf->args->elts;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5063
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5064 ngx_memzero(&rc, sizeof(ngx_regex_compile_t));
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5065
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5066 rc.pool = cf->pool;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5067 rc.err.len = NGX_MAX_CONF_ERRSTR;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5068 rc.err.data = errstr;
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5069
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5070 for (i = 1; i < cf->args->nelts; i++) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5071
3754
5f58badd13ed gzip_disable msie6 ignored other patterns
Igor Sysoev <igor@sysoev.ru>
parents: 3753
diff changeset
5072 if (ngx_strcmp(value[i].data, "msie6") == 0) {
2205
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5073 clcf->gzip_disable_msie6 = 1;
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5074 continue;
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5075 }
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5076
3773
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5077 #if (NGX_HTTP_DEGRADATION)
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5078
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5079 if (ngx_strcmp(value[i].data, "degradation") == 0) {
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5080 clcf->gzip_disable_degradation = 1;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5081 continue;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5082 }
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5083
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5084 #endif
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5085
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5086 re = ngx_array_push(clcf->gzip_disable);
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5087 if (re == NULL) {
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5088 return NGX_CONF_ERROR;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5089 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5090
3753
9da3a04fc845 gzip_disable compiled always the first pattern only
Igor Sysoev <igor@sysoev.ru>
parents: 3752
diff changeset
5091 rc.pattern = value[i];
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5092 rc.options = NGX_REGEX_CASELESS;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5093
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5094 if (ngx_regex_compile(&rc) != NGX_OK) {
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5095 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "%V", &rc.err);
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5096 return NGX_CONF_ERROR;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5097 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5098
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3318
diff changeset
5099 re->regex = rc.regex;
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5100 re->name = value[i].data;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5101 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5102
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5103 return NGX_CONF_OK;
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5104
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5105 #else
3773
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5106 ngx_str_t *value;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5107 ngx_uint_t i;
2205
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5108
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5109 value = cf->args->elts;
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5110
3773
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5111 for (i = 1; i < cf->args->nelts; i++) {
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5112 if (ngx_strcmp(value[i].data, "msie6") == 0) {
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5113 clcf->gzip_disable_msie6 = 1;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5114 continue;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5115 }
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5116
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5117 #if (NGX_HTTP_DEGRADATION)
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5118
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5119 if (ngx_strcmp(value[i].data, "degradation") == 0) {
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5120 clcf->gzip_disable_degradation = 1;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5121 continue;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5122 }
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5123
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5124 #endif
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5125
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5126 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5127 "without PCRE library \"gzip_disable\" supports "
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5128 "builtin \"msie6\" and \"degradation\" mask only");
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5129
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5130 return NGX_CONF_ERROR;
2205
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5131 }
5398f47082f0 gzip_disable msie6
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
5132
3773
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5133 return NGX_CONF_OK;
a08e8b3832ae gzip_disable degradation
Igor Sysoev <igor@sysoev.ru>
parents: 3764
diff changeset
5134
1790
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5135 #endif
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5136 }
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5137
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5138 #endif
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5139
775edc46ee66 ngx_http_gzip_static_module and gzip_disable
Igor Sysoev <igor@sysoev.ru>
parents: 1781
diff changeset
5140
4495
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5141 #if (NGX_HAVE_OPENAT)
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5142
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5143 static char *
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5144 ngx_http_disable_symlinks(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5145 {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5146 ngx_http_core_loc_conf_t *clcf = conf;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5147
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5148 ngx_str_t *value;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5149 ngx_uint_t i;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5150 ngx_http_compile_complex_value_t ccv;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5151
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5152 if (clcf->disable_symlinks != NGX_CONF_UNSET_UINT) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5153 return "is duplicate";
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5154 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5155
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5156 value = cf->args->elts;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5157
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5158 for (i = 1; i < cf->args->nelts; i++) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5159
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5160 if (ngx_strcmp(value[i].data, "off") == 0) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5161 clcf->disable_symlinks = NGX_DISABLE_SYMLINKS_OFF;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5162 continue;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5163 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5164
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5165 if (ngx_strcmp(value[i].data, "if_not_owner") == 0) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5166 clcf->disable_symlinks = NGX_DISABLE_SYMLINKS_NOTOWNER;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5167 continue;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5168 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5169
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5170 if (ngx_strcmp(value[i].data, "on") == 0) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5171 clcf->disable_symlinks = NGX_DISABLE_SYMLINKS_ON;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5172 continue;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5173 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5174
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5175 if (ngx_strncmp(value[i].data, "from=", 5) == 0) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5176 value[i].len -= 5;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5177 value[i].data += 5;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5178
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5179 ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5180
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5181 ccv.cf = cf;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5182 ccv.value = &value[i];
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5183 ccv.complex_value = ngx_palloc(cf->pool,
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5184 sizeof(ngx_http_complex_value_t));
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5185 if (ccv.complex_value == NULL) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5186 return NGX_CONF_ERROR;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5187 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5188
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5189 if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5190 return NGX_CONF_ERROR;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5191 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5192
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5193 clcf->disable_symlinks_from = ccv.complex_value;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5194
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5195 continue;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5196 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5197
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5198 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5199 "invalid parameter \"%V\"", &value[i]);
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5200 return NGX_CONF_ERROR;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5201 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5202
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5203 if (clcf->disable_symlinks == NGX_CONF_UNSET_UINT) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5204 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5205 "\"%V\" must have \"off\", \"on\" "
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5206 "or \"if_not_owner\" parameter",
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5207 &cmd->name);
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5208 return NGX_CONF_ERROR;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5209 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5210
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5211 if (cf->args->nelts == 2) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5212 clcf->disable_symlinks_from = NULL;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5213 return NGX_CONF_OK;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5214 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5215
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5216 if (clcf->disable_symlinks_from == NGX_CONF_UNSET_PTR) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5217 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5218 "duplicate parameters \"%V %V\"",
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5219 &value[1], &value[2]);
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5220 return NGX_CONF_ERROR;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5221 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5222
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5223 if (clcf->disable_symlinks == NGX_DISABLE_SYMLINKS_OFF) {
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5224 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5225 "\"from=\" cannot be used with \"off\" parameter");
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5226 return NGX_CONF_ERROR;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5227 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5228
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5229 return NGX_CONF_OK;
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5230 }
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5231
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5232 #endif
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5233
b4379a91f9b5 Disable symlinks: added the "from=" parameter to the "disable_symlinks"
Valentin Bartenev <vbart@nginx.com>
parents: 4494
diff changeset
5234
1652
cc7a7d0b89e8 http resolver and resolver_timeout
Igor Sysoev <igor@sysoev.ru>
parents: 1592
diff changeset
5235 static char *
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
5236 ngx_http_core_lowat_check(ngx_conf_t *cf, void *post, void *data)
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5237 {
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
5238 #if (NGX_FREEBSD)
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
5239 ssize_t *np = data;
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5240
673
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 671
diff changeset
5241 if ((u_long) *np >= ngx_freebsd_net_inet_tcp_sendspace) {
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5242 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5243 "\"send_lowat\" must be less than %d "
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5244 "(sysctl net.inet.tcp.sendspace)",
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5245 ngx_freebsd_net_inet_tcp_sendspace);
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5246
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5247 return NGX_CONF_ERROR;
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5248 }
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5249
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
5250 #elif !(NGX_HAVE_SO_SNDLOWAT)
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
5251 ssize_t *np = data;
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5252
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5253 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5254 "\"send_lowat\" is not supported, ignored");
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5255
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
5256 *np = 0;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
5257
164
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5258 #endif
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5259
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5260 return NGX_CONF_OK;
84036764e215 nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 163
diff changeset
5261 }
1200
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5262
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5263
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5264 static char *
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5265 ngx_http_core_pool_size(ngx_conf_t *cf, void *post, void *data)
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5266 {
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5267 size_t *sp = data;
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5268
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5269 if (*sp < NGX_MIN_POOL_SIZE) {
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5270 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
3388
d788521e4b0e fix r3331:
Igor Sysoev <igor@sysoev.ru>
parents: 3381
diff changeset
5271 "the pool size must be no less than %uz",
d788521e4b0e fix r3331:
Igor Sysoev <igor@sysoev.ru>
parents: 3381
diff changeset
5272 NGX_MIN_POOL_SIZE);
d788521e4b0e fix r3331:
Igor Sysoev <igor@sysoev.ru>
parents: 3381
diff changeset
5273 return NGX_CONF_ERROR;
d788521e4b0e fix r3331:
Igor Sysoev <igor@sysoev.ru>
parents: 3381
diff changeset
5274 }
d788521e4b0e fix r3331:
Igor Sysoev <igor@sysoev.ru>
parents: 3381
diff changeset
5275
d788521e4b0e fix r3331:
Igor Sysoev <igor@sysoev.ru>
parents: 3381
diff changeset
5276 if (*sp % NGX_POOL_ALIGNMENT) {
d788521e4b0e fix r3331:
Igor Sysoev <igor@sysoev.ru>
parents: 3381
diff changeset
5277 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
d788521e4b0e fix r3331:
Igor Sysoev <igor@sysoev.ru>
parents: 3381
diff changeset
5278 "the pool size must be a multiple of %uz",
d788521e4b0e fix r3331:
Igor Sysoev <igor@sysoev.ru>
parents: 3381
diff changeset
5279 NGX_POOL_ALIGNMENT);
1200
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5280 return NGX_CONF_ERROR;
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5281 }
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5282
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5283 return NGX_CONF_OK;
ff63527ea29c limit minimal pool size
Igor Sysoev <igor@sysoev.ru>
parents: 1199
diff changeset
5284 }