annotate src/core/nginx.c @ 6862:abb0a4189cf7

Win32: compatiblity with OpenSSL 1.1.0. OpenSSL 1.1.0 now uses normal "nmake; nmake install" instead of using custom "ms\do_ms.bat" script and "ms\nt.mak" makefile. And Configure now requires --prefix to be absolute, and no longer derives --openssldir from prefix (so it's specified explicitly). Generated libraries are now called "libcrypto.lib" and "libssl.lib" instead of "libeay32.lib" and "ssleay32.lib". Appropriate tests added to support both old and new variants. Additionally, openssl/lhash.h now triggers warning C4090 ('function' : different 'const' qualifiers), so the warning was disabled.
author Maxim Dounin <mdounin@mdounin.ru>
date Sat, 24 Dec 2016 18:01:14 +0300
parents c045b4926b2c
children 97c99bb43737
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: 443
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4293
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
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
7
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
8 #include <ngx_config.h>
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 97
diff changeset
9 #include <ngx_core.h>
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 #include <nginx.h>
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12
6446
0ff7eff48c7e Fix build with -Wmissing-prototypes.
Piotr Sikora <piotrsikora@google.com>
parents: 6402
diff changeset
13 static void ngx_show_version_info(void);
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
14 static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle);
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
15 static void ngx_cleanup_environment(void *data);
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
16 static ngx_int_t ngx_get_options(int argc, char *const *argv);
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
17 static ngx_int_t ngx_process_options(ngx_cycle_t *cycle);
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
18 static ngx_int_t ngx_save_argv(ngx_cycle_t *cycle, int argc, char *const *argv);
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
19 static void *ngx_core_module_create_conf(ngx_cycle_t *cycle);
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
20 static char *ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf);
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
21 static char *ngx_set_user(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
22 static char *ngx_set_env(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
23 static char *ngx_set_priority(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
24 static char *ngx_set_cpu_affinity(ngx_conf_t *cf, ngx_command_t *cmd,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
25 void *conf);
4890
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
26 static char *ngx_set_worker_processes(ngx_conf_t *cf, ngx_command_t *cmd,
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
27 void *conf);
6383
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
28 static char *ngx_load_module(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
29 #if (NGX_HAVE_DLOPEN)
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
30 static void ngx_unload_module(void *data);
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
31 #endif
3
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 2
diff changeset
32
117
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
33
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
34 static ngx_conf_enum_t ngx_debug_points[] = {
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
35 { ngx_string("stop"), NGX_DEBUG_POINTS_STOP },
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
36 { ngx_string("abort"), NGX_DEBUG_POINTS_ABORT },
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
37 { ngx_null_string, 0 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
38 };
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
39
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
40
117
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
41 static ngx_command_t ngx_core_commands[] = {
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
42
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
43 { ngx_string("daemon"),
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
44 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_FLAG,
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
45 ngx_conf_set_flag_slot,
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
46 0,
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
47 offsetof(ngx_core_conf_t, daemon),
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
48 NULL },
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
49
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
50 { ngx_string("master_process"),
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
51 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_FLAG,
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
52 ngx_conf_set_flag_slot,
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
53 0,
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
54 offsetof(ngx_core_conf_t, master),
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
55 NULL },
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
56
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
57 { ngx_string("timer_resolution"),
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
58 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
59 ngx_conf_set_msec_slot,
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
60 0,
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
61 offsetof(ngx_core_conf_t, timer_resolution),
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
62 NULL },
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
63
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
64 { ngx_string("pid"),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
65 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
66 ngx_conf_set_str_slot,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
67 0,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
68 offsetof(ngx_core_conf_t, pid),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
69 NULL },
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
70
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
71 { ngx_string("lock_file"),
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
72 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
73 ngx_conf_set_str_slot,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
74 0,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
75 offsetof(ngx_core_conf_t, lock_file),
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
76 NULL },
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
77
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
78 { ngx_string("worker_processes"),
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
79 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
4890
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
80 ngx_set_worker_processes,
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
81 0,
4890
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
82 0,
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
83 NULL },
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
84
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
85 { ngx_string("debug_points"),
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
86 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
87 ngx_conf_set_enum_slot,
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
88 0,
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
89 offsetof(ngx_core_conf_t, debug_points),
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
90 &ngx_debug_points },
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
91
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
92 { ngx_string("user"),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
93 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE12,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
94 ngx_set_user,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
95 0,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
96 0,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
97 NULL },
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
98
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
99 { ngx_string("worker_priority"),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
100 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
101 ngx_set_priority,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
102 0,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
103 0,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
104 NULL },
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
105
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
106 { ngx_string("worker_cpu_affinity"),
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
107 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_1MORE,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
108 ngx_set_cpu_affinity,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
109 0,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
110 0,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
111 NULL },
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
112
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
113 { ngx_string("worker_rlimit_nofile"),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
114 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
115 ngx_conf_set_num_slot,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
116 0,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
117 offsetof(ngx_core_conf_t, rlimit_nofile),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
118 NULL },
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
119
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
120 { ngx_string("worker_rlimit_core"),
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
121 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
3762
89002ac695e5 worker_rlimit_core should be off_t
Igor Sysoev <igor@sysoev.ru>
parents: 3750
diff changeset
122 ngx_conf_set_off_slot,
589
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
123 0,
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
124 offsetof(ngx_core_conf_t, rlimit_core),
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
125 NULL },
d4e858a5751a nginx-0.3.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
126
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
127 { ngx_string("working_directory"),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
128 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
129 ngx_conf_set_str_slot,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
130 0,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
131 offsetof(ngx_core_conf_t, working_directory),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
132 NULL },
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
133
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
134 { ngx_string("env"),
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
135 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
136 ngx_set_env,
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
137 0,
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
138 0,
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
139 NULL },
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
140
6383
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
141 { ngx_string("load_module"),
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
142 NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
143 ngx_load_module,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
144 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
145 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
146 NULL },
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
147
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 207
diff changeset
148 ngx_null_command
117
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
149 };
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
150
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
151
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
152 static ngx_core_module_t ngx_core_module_ctx = {
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
153 ngx_string("core"),
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
154 ngx_core_module_create_conf,
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
155 ngx_core_module_init_conf
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
156 };
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
157
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
158
117
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
159 ngx_module_t ngx_core_module = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 505
diff changeset
160 NGX_MODULE_V1,
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
161 &ngx_core_module_ctx, /* module context */
117
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
162 ngx_core_commands, /* module directives */
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
163 NGX_CORE_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
164 NULL, /* init master */
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
165 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
166 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
167 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
168 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
169 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
170 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
171 NGX_MODULE_V1_PADDING
117
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
172 };
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
173
f6e3c5d019b6 nginx-0.0.1-2003-07-11-19:17:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 115
diff changeset
174
2735
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
175 static ngx_uint_t ngx_show_help;
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
176 static ngx_uint_t ngx_show_version;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
177 static ngx_uint_t ngx_show_configure;
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
178 static u_char *ngx_prefix;
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
179 static u_char *ngx_conf_file;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
180 static u_char *ngx_conf_params;
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
181 static char *ngx_signal;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
182
639
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
183
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
184 static char **ngx_os_environ;
601
77f77f53214a nginx-0.3.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 589
diff changeset
185
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 106
diff changeset
186
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
187 int ngx_cdecl
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
188 main(int argc, char *const *argv)
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 106
diff changeset
189 {
6187
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
190 ngx_buf_t *b;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
191 ngx_log_t *log;
6187
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
192 ngx_uint_t i;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
193 ngx_cycle_t *cycle, init_cycle;
6187
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
194 ngx_conf_dump_t *cd;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
195 ngx_core_conf_t *ccf;
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 106
diff changeset
196
4222
2dd6c7cb211a FreeBSD's MALLOC_OPTIONS must be set before any malloc() call.
Igor Sysoev <igor@sysoev.ru>
parents: 3798
diff changeset
197 ngx_debug_init();
2dd6c7cb211a FreeBSD's MALLOC_OPTIONS must be set before any malloc() call.
Igor Sysoev <igor@sysoev.ru>
parents: 3798
diff changeset
198
3798
61d64ab739a0 move ngx_strerror_init() at the very start
Igor Sysoev <igor@sysoev.ru>
parents: 3787
diff changeset
199 if (ngx_strerror_init() != NGX_OK) {
61d64ab739a0 move ngx_strerror_init() at the very start
Igor Sysoev <igor@sysoev.ru>
parents: 3787
diff changeset
200 return 1;
61d64ab739a0 move ngx_strerror_init() at the very start
Igor Sysoev <igor@sysoev.ru>
parents: 3787
diff changeset
201 }
61d64ab739a0 move ngx_strerror_init() at the very start
Igor Sysoev <igor@sysoev.ru>
parents: 3787
diff changeset
202
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
203 if (ngx_get_options(argc, argv) != NGX_OK) {
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
204 return 1;
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
205 }
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
206
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
207 if (ngx_show_version) {
6257
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
208 ngx_show_version_info();
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
209
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
210 if (!ngx_test_config) {
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
211 return 0;
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
212 }
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
213 }
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
214
108
adc093f880c8 nginx-0.0.1-2003-07-02-09:01:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
215 /* TODO */ ngx_max_sockets = -1;
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 106
diff changeset
216
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
217 ngx_time_init();
221
401154e21826 nginx-0.0.1-2004-01-08-20:08:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
218
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
219 #if (NGX_PCRE)
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
220 ngx_regex_init();
212
679f60139863 nginx-0.0.1-2003-12-19-11:15:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
221 #endif
182
3c49eaf3f522 nginx-0.0.1-2003-11-13-09:14:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 144
diff changeset
222
443
33aec431094b nginx-0.1.0-2004-09-29-00:09:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
223 ngx_pid = ngx_getpid();
33aec431094b nginx-0.1.0-2004-09-29-00:09:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
224
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
225 log = ngx_log_init(ngx_prefix);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
226 if (log == NULL) {
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 443
diff changeset
227 return 1;
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 443
diff changeset
228 }
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 106
diff changeset
229
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
230 /* STUB */
393
5659d773cfa8 nginx-0.0.7-2004-07-15-20:35:51 import
Igor Sysoev <igor@sysoev.ru>
parents: 376
diff changeset
231 #if (NGX_OPENSSL)
5659d773cfa8 nginx-0.0.7-2004-07-15-20:35:51 import
Igor Sysoev <igor@sysoev.ru>
parents: 376
diff changeset
232 ngx_ssl_init(log);
5659d773cfa8 nginx-0.0.7-2004-07-15-20:35:51 import
Igor Sysoev <igor@sysoev.ru>
parents: 376
diff changeset
233 #endif
5659d773cfa8 nginx-0.0.7-2004-07-15-20:35:51 import
Igor Sysoev <igor@sysoev.ru>
parents: 376
diff changeset
234
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
235 /*
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
236 * init_cycle->log is required for signal handlers and
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
237 * ngx_process_options()
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
238 */
212
679f60139863 nginx-0.0.1-2003-12-19-11:15:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
239
679f60139863 nginx-0.0.1-2003-12-19-11:15:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
240 ngx_memzero(&init_cycle, sizeof(ngx_cycle_t));
679f60139863 nginx-0.0.1-2003-12-19-11:15:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
241 init_cycle.log = log;
679f60139863 nginx-0.0.1-2003-12-19-11:15:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
242 ngx_cycle = &init_cycle;
679f60139863 nginx-0.0.1-2003-12-19-11:15:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
243
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
244 init_cycle.pool = ngx_create_pool(1024, log);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
245 if (init_cycle.pool == NULL) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
246 return 1;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
247 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
248
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
249 if (ngx_save_argv(&init_cycle, argc, argv) != NGX_OK) {
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
250 return 1;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
251 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
252
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
253 if (ngx_process_options(&init_cycle) != NGX_OK) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
254 return 1;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
255 }
448
241dc8092a33 nginx-0.1.0-2004-10-01-19:53:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
256
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
257 if (ngx_os_init(log) != NGX_OK) {
443
33aec431094b nginx-0.1.0-2004-09-29-00:09:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
258 return 1;
33aec431094b nginx-0.1.0-2004-09-29-00:09:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
259 }
33aec431094b nginx-0.1.0-2004-09-29-00:09:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
260
1694
8c696afe46b3 rename ngx_crc32_init() to ngx_crc32_table_init()
Igor Sysoev <igor@sysoev.ru>
parents: 1407
diff changeset
261 /*
8c696afe46b3 rename ngx_crc32_init() to ngx_crc32_table_init()
Igor Sysoev <igor@sysoev.ru>
parents: 1407
diff changeset
262 * ngx_crc32_table_init() requires ngx_cacheline_size set in ngx_os_init()
8c696afe46b3 rename ngx_crc32_init() to ngx_crc32_table_init()
Igor Sysoev <igor@sysoev.ru>
parents: 1407
diff changeset
263 */
930
45df22906c12 allocate aligned ngx_crc32_table_short globally
Igor Sysoev <igor@sysoev.ru>
parents: 860
diff changeset
264
1694
8c696afe46b3 rename ngx_crc32_init() to ngx_crc32_table_init()
Igor Sysoev <igor@sysoev.ru>
parents: 1407
diff changeset
265 if (ngx_crc32_table_init() != NGX_OK) {
930
45df22906c12 allocate aligned ngx_crc32_table_short globally
Igor Sysoev <igor@sysoev.ru>
parents: 860
diff changeset
266 return 1;
45df22906c12 allocate aligned ngx_crc32_table_short globally
Igor Sysoev <igor@sysoev.ru>
parents: 860
diff changeset
267 }
45df22906c12 allocate aligned ngx_crc32_table_short globally
Igor Sysoev <igor@sysoev.ru>
parents: 860
diff changeset
268
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
269 if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
270 return 1;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
271 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
272
6378
0f203a2af17c Dynamic modules: moved module-related stuff to separate files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6335
diff changeset
273 if (ngx_preinit_modules() != NGX_OK) {
0f203a2af17c Dynamic modules: moved module-related stuff to separate files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6335
diff changeset
274 return 1;
317
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
275 }
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
276
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
277 cycle = ngx_init_cycle(&init_cycle);
108
adc093f880c8 nginx-0.0.1-2003-07-02-09:01:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
278 if (cycle == NULL) {
320
d621239c30f7 nginx-0.0.3-2004-04-18-23:06:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
279 if (ngx_test_config) {
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
280 ngx_log_stderr(0, "configuration file %s test failed",
2722
ffa8e2451457 show -t results on stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2536
diff changeset
281 init_cycle.conf_file.data);
320
d621239c30f7 nginx-0.0.3-2004-04-18-23:06:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
282 }
d621239c30f7 nginx-0.0.3-2004-04-18-23:06:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
283
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 106
diff changeset
284 return 1;
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 106
diff changeset
285 }
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 106
diff changeset
286
317
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
287 if (ngx_test_config) {
3750
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
288 if (!ngx_quiet_mode) {
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
289 ngx_log_stderr(0, "configuration file %s test is successful",
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
290 cycle->conf_file.data);
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
291 }
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
292
6187
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
293 if (ngx_dump_config) {
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
294 cd = cycle->config_dump.elts;
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
295
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
296 for (i = 0; i < cycle->config_dump.nelts; i++) {
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
297
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
298 ngx_write_stdout("# configuration file ");
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
299 (void) ngx_write_fd(ngx_stdout, cd[i].name.data,
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
300 cd[i].name.len);
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
301 ngx_write_stdout(":" NGX_LINEFEED);
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
302
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
303 b = cd[i].buffer;
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
304
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
305 (void) ngx_write_fd(ngx_stdout, b->pos, b->last - b->pos);
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
306 ngx_write_stdout(NGX_LINEFEED);
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
307 }
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
308 }
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
309
317
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
310 return 0;
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
311 }
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
312
2923
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2767
diff changeset
313 if (ngx_signal) {
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2767
diff changeset
314 return ngx_signal_process(cycle, ngx_signal);
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2767
diff changeset
315 }
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2767
diff changeset
316
449
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
317 ngx_os_status(cycle->log);
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
318
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
319 ngx_cycle = cycle;
113
d7f606e25b99 nginx-0.0.1-2003-07-04-19:10:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 111
diff changeset
320
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
321 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
322
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
323 if (ccf->master && ngx_process == NGX_PROCESS_SINGLE) {
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
324 ngx_process = NGX_PROCESS_MASTER;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
325 }
220
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
326
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2735
diff changeset
327 #if !(NGX_WIN32)
115
be27f922b9a2 nginx-0.0.1-2003-07-10-20:26:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 114
diff changeset
328
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
329 if (ngx_init_signals(cycle->log) != NGX_OK) {
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
330 return 1;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
331 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
332
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
333 if (!ngx_inherited && ccf->daemon) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
334 if (ngx_daemon(cycle->log) != NGX_OK) {
115
be27f922b9a2 nginx-0.0.1-2003-07-10-20:26:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 114
diff changeset
335 return 1;
be27f922b9a2 nginx-0.0.1-2003-07-10-20:26:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 114
diff changeset
336 }
366
e411b1482ee3 nginx-0.0.7-2004-06-23-19:18:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 337
diff changeset
337
e411b1482ee3 nginx-0.0.7-2004-06-23-19:18:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 337
diff changeset
338 ngx_daemonized = 1;
115
be27f922b9a2 nginx-0.0.1-2003-07-10-20:26:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 114
diff changeset
339 }
be27f922b9a2 nginx-0.0.1-2003-07-10-20:26:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 114
diff changeset
340
4293
3bae3d8fb573 Fixed handling of SIGWINCH/NOACCEPT signal.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4283
diff changeset
341 if (ngx_inherited) {
3bae3d8fb573 Fixed handling of SIGWINCH/NOACCEPT signal.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4283
diff changeset
342 ngx_daemonized = 1;
3bae3d8fb573 Fixed handling of SIGWINCH/NOACCEPT signal.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4283
diff changeset
343 }
3bae3d8fb573 Fixed handling of SIGWINCH/NOACCEPT signal.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4283
diff changeset
344
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
345 #endif
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
346
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
347 if (ngx_create_pidfile(&ccf->pid, cycle->log) != NGX_OK) {
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
348 return 1;
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
349 }
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
350
5260
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5240
diff changeset
351 if (ngx_log_redirect_stderr(cycle) != NGX_OK) {
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5240
diff changeset
352 return 1;
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
353 }
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
354
3199
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
355 if (log->file->fd != ngx_stderr) {
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
356 if (ngx_close_file(log->file->fd) == NGX_FILE_ERROR) {
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
357 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
358 ngx_close_file_n " built-in log failed");
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
359 }
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
360 }
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
361
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
362 ngx_use_stderr = 0;
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
363
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
364 if (ngx_process == NGX_PROCESS_SINGLE) {
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
365 ngx_single_process_cycle(cycle);
318
56496082668b nginx-0.0.3-2004-04-16-09:14:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 317
diff changeset
366
56496082668b nginx-0.0.3-2004-04-16-09:14:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 317
diff changeset
367 } else {
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
368 ngx_master_process_cycle(cycle);
318
56496082668b nginx-0.0.3-2004-04-16-09:14:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 317
diff changeset
369 }
220
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
370
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
371 return 0;
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
372 }
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
373
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
374
6257
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
375 static void
6446
0ff7eff48c7e Fix build with -Wmissing-prototypes.
Piotr Sikora <piotrsikora@google.com>
parents: 6402
diff changeset
376 ngx_show_version_info(void)
6257
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
377 {
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
378 ngx_write_stderr("nginx version: " NGINX_VER_BUILD NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
379
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
380 if (ngx_show_help) {
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
381 ngx_write_stderr(
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
382 "Usage: nginx [-?hvVtTq] [-s signal] [-c filename] "
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
383 "[-p prefix] [-g directives]" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
384 NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
385 "Options:" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
386 " -?,-h : this help" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
387 " -v : show version and exit" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
388 " -V : show version and configure options then exit"
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
389 NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
390 " -t : test configuration and exit" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
391 " -T : test configuration, dump it and exit"
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
392 NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
393 " -q : suppress non-error messages "
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
394 "during configuration testing" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
395 " -s signal : send signal to a master process: "
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
396 "stop, quit, reopen, reload" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
397 #ifdef NGX_PREFIX
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
398 " -p prefix : set prefix path (default: " NGX_PREFIX ")"
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
399 NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
400 #else
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
401 " -p prefix : set prefix path (default: NONE)" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
402 #endif
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
403 " -c filename : set configuration file (default: " NGX_CONF_PATH
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
404 ")" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
405 " -g directives : set global directives out of configuration "
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
406 "file" NGX_LINEFEED NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
407 );
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
408 }
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
409
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
410 if (ngx_show_configure) {
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
411
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
412 #ifdef NGX_COMPILER
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
413 ngx_write_stderr("built by " NGX_COMPILER NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
414 #endif
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
415
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
416 #if (NGX_SSL)
6492
3b77efe05b92 SSL: SSLeay_version() is deprecated in OpenSSL 1.1.0.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6480
diff changeset
417 if (ngx_strcmp(ngx_ssl_version(), OPENSSL_VERSION_TEXT) == 0) {
6257
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
418 ngx_write_stderr("built with " OPENSSL_VERSION_TEXT NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
419 } else {
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
420 ngx_write_stderr("built with " OPENSSL_VERSION_TEXT
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
421 " (running with ");
6492
3b77efe05b92 SSL: SSLeay_version() is deprecated in OpenSSL 1.1.0.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6480
diff changeset
422 ngx_write_stderr((char *) (uintptr_t) ngx_ssl_version());
6257
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
423 ngx_write_stderr(")" NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
424 }
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
425 #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
426 ngx_write_stderr("TLS SNI support enabled" NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
427 #else
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
428 ngx_write_stderr("TLS SNI support disabled" NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
429 #endif
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
430 #endif
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
431
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
432 ngx_write_stderr("configure arguments:" NGX_CONFIGURE NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
433 }
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
434 }
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
435
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
436
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
437 static ngx_int_t
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
438 ngx_add_inherited_sockets(ngx_cycle_t *cycle)
219
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
439 {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
440 u_char *p, *v, *inherited;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
441 ngx_int_t s;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
442 ngx_listening_t *ls;
219
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
443
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 289
diff changeset
444 inherited = (u_char *) getenv(NGINX_VAR);
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
445
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
446 if (inherited == NULL) {
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
447 return NGX_OK;
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
448 }
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
449
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
450 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0,
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
451 "using inherited sockets from \"%s\"", inherited);
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
452
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
453 if (ngx_array_init(&cycle->listening, cycle->pool, 10,
745
95aa79944291 add sun4v,
Igor Sysoev <igor@sysoev.ru>
parents: 641
diff changeset
454 sizeof(ngx_listening_t))
2536
a6d6d762c554 small optimization: " == NGX_ERROR" > " != NGX_OK"
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
455 != NGX_OK)
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
456 {
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
457 return NGX_ERROR;
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
458 }
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
459
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
460 for (p = inherited, v = p; *p; p++) {
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
461 if (*p == ':' || *p == ';') {
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
462 s = ngx_atoi(v, p - v);
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
463 if (s == NGX_ERROR) {
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
464 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
537
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
465 "invalid socket number \"%s\" in " NGINX_VAR
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
466 " environment variable, ignoring the rest"
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
467 " of the variable", v);
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
468 break;
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
469 }
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
470
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 289
diff changeset
471 v = p + 1;
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
472
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
473 ls = ngx_array_push(&cycle->listening);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
474 if (ls == NULL) {
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
475 return NGX_ERROR;
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 289
diff changeset
476 }
219
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
477
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
478 ngx_memzero(ls, sizeof(ngx_listening_t));
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
479
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
480 ls->fd = (ngx_socket_t) s;
219
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
481 }
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
482 }
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
483
6399
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
484 if (v != p) {
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
485 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
486 "invalid socket number \"%s\" in " NGINX_VAR
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
487 " environment variable, ignoring", v);
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
488 }
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
489
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
490 ngx_inherited = 1;
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
491
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
492 return ngx_set_inherited_sockets(cycle);
219
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
493 }
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
494
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
495
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
496 char **
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
497 ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
498 {
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
499 char **p, **env;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
500 ngx_str_t *var;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
501 ngx_uint_t i, n;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
502 ngx_core_conf_t *ccf;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
503 ngx_pool_cleanup_t *cln;
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
504
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
505 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
506
1080
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
507 if (last == NULL && ccf->environment) {
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
508 return ccf->environment;
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
509 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
510
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
511 var = ccf->env.elts;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
512
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
513 for (i = 0; i < ccf->env.nelts; i++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
514 if (ngx_strcmp(var[i].data, "TZ") == 0
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
515 || ngx_strncmp(var[i].data, "TZ=", 3) == 0)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
516 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
517 goto tz_found;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
518 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
519 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
520
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
521 var = ngx_array_push(&ccf->env);
1318
114428c61a3a fix potential segfault,
Igor Sysoev <igor@sysoev.ru>
parents: 1288
diff changeset
522 if (var == NULL) {
114428c61a3a fix potential segfault,
Igor Sysoev <igor@sysoev.ru>
parents: 1288
diff changeset
523 return NULL;
114428c61a3a fix potential segfault,
Igor Sysoev <igor@sysoev.ru>
parents: 1288
diff changeset
524 }
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
525
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
526 var->len = 2;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
527 var->data = (u_char *) "TZ";
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
528
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
529 var = ccf->env.elts;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
530
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
531 tz_found:
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
532
1080
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
533 n = 0;
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
534
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
535 for (i = 0; i < ccf->env.nelts; i++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
536
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
537 if (var[i].data[var[i].len] == '=') {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
538 n++;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
539 continue;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
540 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
541
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
542 for (p = ngx_os_environ; *p; p++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
543
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
544 if (ngx_strncmp(*p, var[i].data, var[i].len) == 0
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
545 && (*p)[var[i].len] == '=')
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
546 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
547 n++;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
548 break;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
549 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
550 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
551 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
552
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
553 if (last) {
1080
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
554 env = ngx_alloc((*last + n + 1) * sizeof(char *), cycle->log);
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
555 if (env == NULL) {
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
556 return NULL;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
557 }
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
558
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
559 *last = n;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
560
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
561 } else {
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
562 cln = ngx_pool_cleanup_add(cycle->pool, 0);
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
563 if (cln == NULL) {
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
564 return NULL;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
565 }
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
566
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
567 env = ngx_alloc((n + 1) * sizeof(char *), cycle->log);
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
568 if (env == NULL) {
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
569 return NULL;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
570 }
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
571
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
572 cln->handler = ngx_cleanup_environment;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
573 cln->data = env;
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
574 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
575
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
576 n = 0;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
577
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
578 for (i = 0; i < ccf->env.nelts; i++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
579
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
580 if (var[i].data[var[i].len] == '=') {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
581 env[n++] = (char *) var[i].data;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
582 continue;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
583 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
584
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
585 for (p = ngx_os_environ; *p; p++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
586
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
587 if (ngx_strncmp(*p, var[i].data, var[i].len) == 0
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
588 && (*p)[var[i].len] == '=')
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
589 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
590 env[n++] = *p;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
591 break;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
592 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
593 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
594 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
595
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
596 env[n] = NULL;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
597
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
598 if (last == NULL) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
599 ccf->environment = env;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
600 environ = env;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
601 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
602
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
603 return env;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
604 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
605
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
606
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
607 static void
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
608 ngx_cleanup_environment(void *data)
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
609 {
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
610 char **env = data;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
611
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
612 if (environ == env) {
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
613
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
614 /*
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
615 * if the environment is still used, as it happens on exit,
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
616 * the only option is to leak it
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
617 */
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
618
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
619 return;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
620 }
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
621
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
622 ngx_free(env);
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
623 }
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
624
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
625
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
626 ngx_pid_t
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
627 ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv)
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
628 {
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
629 char **env, *var;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
630 u_char *p;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
631 ngx_uint_t i, n;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
632 ngx_pid_t pid;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
633 ngx_exec_ctx_t ctx;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
634 ngx_core_conf_t *ccf;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
635 ngx_listening_t *ls;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
636
2745
1983932b8075 pass command lines options to workers
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
637 ngx_memzero(&ctx, sizeof(ngx_exec_ctx_t));
1983932b8075 pass command lines options to workers
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
638
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
639 ctx.path = argv[0];
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
640 ctx.name = "new binary process";
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
641 ctx.argv = argv;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
642
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
643 n = 2;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
644 env = ngx_set_environment(cycle, &n);
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
645 if (env == NULL) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
646 return NGX_INVALID_PID;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
647 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
648
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
649 var = ngx_alloc(sizeof(NGINX_VAR)
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
650 + cycle->listening.nelts * (NGX_INT32_LEN + 1) + 2,
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
651 cycle->log);
5116
4d7027deb1bb Core: guard against failed allocation during binary upgrade.
Ruslan Ermilov <ru@nginx.com>
parents: 4890
diff changeset
652 if (var == NULL) {
5122
3450eee1ee8d Core: fixed resource leak if binary upgrade fails due to no memory.
Ruslan Ermilov <ru@nginx.com>
parents: 5116
diff changeset
653 ngx_free(env);
5116
4d7027deb1bb Core: guard against failed allocation during binary upgrade.
Ruslan Ermilov <ru@nginx.com>
parents: 4890
diff changeset
654 return NGX_INVALID_PID;
4d7027deb1bb Core: guard against failed allocation during binary upgrade.
Ruslan Ermilov <ru@nginx.com>
parents: 4890
diff changeset
655 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
656
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
657 p = ngx_cpymem(var, NGINX_VAR "=", sizeof(NGINX_VAR));
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
658
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
659 ls = cycle->listening.elts;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
660 for (i = 0; i < cycle->listening.nelts; i++) {
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
661 p = ngx_sprintf(p, "%ud;", ls[i].fd);
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
662 }
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
663
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
664 *p = '\0';
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
665
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
666 env[n++] = var;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
667
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
668 #if (NGX_SETPROCTITLE_USES_ENV)
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
669
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
670 /* allocate the spare 300 bytes for the new binary process title */
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
671
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
672 env[n++] = "SPARE=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
673 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
674 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
675 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
676 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
677
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
678 #endif
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
679
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
680 env[n] = NULL;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
681
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
682 #if (NGX_DEBUG)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
683 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
684 char **e;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
685 for (e = env; *e; e++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
686 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, 0, "env: %s", *e);
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
687 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
688 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
689 #endif
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
690
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
691 ctx.envp = (char *const *) env;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
692
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
693 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
694
5137
f941cf265cc5 Use NGX_FILE_ERROR for handling file operations errors.
Valentin Bartenev <vbart@nginx.com>
parents: 5122
diff changeset
695 if (ngx_rename_file(ccf->pid.data, ccf->oldpid.data) == NGX_FILE_ERROR) {
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
696 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
697 ngx_rename_file_n " %s to %s failed "
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
698 "before executing new binary process \"%s\"",
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
699 ccf->pid.data, ccf->oldpid.data, argv[0]);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
700
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
701 ngx_free(env);
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
702 ngx_free(var);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
703
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
704 return NGX_INVALID_PID;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
705 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
706
279
b79f021a644a nginx-0.0.2-2004-03-04-19:34:23 import
Igor Sysoev <igor@sysoev.ru>
parents: 278
diff changeset
707 pid = ngx_execute(cycle, &ctx);
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
708
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
709 if (pid == NGX_INVALID_PID) {
5137
f941cf265cc5 Use NGX_FILE_ERROR for handling file operations errors.
Valentin Bartenev <vbart@nginx.com>
parents: 5122
diff changeset
710 if (ngx_rename_file(ccf->oldpid.data, ccf->pid.data)
f941cf265cc5 Use NGX_FILE_ERROR for handling file operations errors.
Valentin Bartenev <vbart@nginx.com>
parents: 5122
diff changeset
711 == NGX_FILE_ERROR)
f941cf265cc5 Use NGX_FILE_ERROR for handling file operations errors.
Valentin Bartenev <vbart@nginx.com>
parents: 5122
diff changeset
712 {
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
713 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
714 ngx_rename_file_n " %s back to %s failed after "
4593
834049edae24 Fixed grammar in error messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4549
diff changeset
715 "an attempt to execute new binary process \"%s\"",
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
716 ccf->oldpid.data, ccf->pid.data, argv[0]);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
717 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
718 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
719
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
720 ngx_free(env);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
721 ngx_free(var);
226
b0c1e21e68db nginx-0.0.1-2004-01-14-00:33:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 225
diff changeset
722
b0c1e21e68db nginx-0.0.1-2004-01-14-00:33:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 225
diff changeset
723 return pid;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
724 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
725
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
726
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
727 static ngx_int_t
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
728 ngx_get_options(int argc, char *const *argv)
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
729 {
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
730 u_char *p;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
731 ngx_int_t i;
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
732
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
733 for (i = 1; i < argc; i++) {
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
734
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
735 p = (u_char *) argv[i];
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
736
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
737 if (*p++ != '-') {
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
738 ngx_log_stderr(0, "invalid option: \"%s\"", argv[i]);
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
739 return NGX_ERROR;
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
740 }
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
741
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
742 while (*p) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
743
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
744 switch (*p++) {
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
745
2735
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
746 case '?':
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
747 case 'h':
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
748 ngx_show_version = 1;
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
749 ngx_show_help = 1;
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
750 break;
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
751
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
752 case 'v':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
753 ngx_show_version = 1;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
754 break;
639
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
755
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
756 case 'V':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
757 ngx_show_version = 1;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
758 ngx_show_configure = 1;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
759 break;
945
3a126fca07fc the -V switch
Igor Sysoev <igor@sysoev.ru>
parents: 930
diff changeset
760
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
761 case 't':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
762 ngx_test_config = 1;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
763 break;
317
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
764
6187
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
765 case 'T':
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
766 ngx_test_config = 1;
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
767 ngx_dump_config = 1;
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
768 break;
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
769
3750
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
770 case 'q':
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
771 ngx_quiet_mode = 1;
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
772 break;
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
773
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
774 case 'p':
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
775 if (*p) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
776 ngx_prefix = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
777 goto next;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
778 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
779
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
780 if (argv[++i]) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
781 ngx_prefix = (u_char *) argv[i];
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
782 goto next;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
783 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
784
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
785 ngx_log_stderr(0, "option \"-p\" requires directory name");
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
786 return NGX_ERROR;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
787
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
788 case 'c':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
789 if (*p) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
790 ngx_conf_file = p;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
791 goto next;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
792 }
316
a0beefedaf94 nginx-0.0.3-2004-04-15-00:34:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
793
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
794 if (argv[++i]) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
795 ngx_conf_file = (u_char *) argv[i];
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
796 goto next;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
797 }
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
798
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
799 ngx_log_stderr(0, "option \"-c\" requires file name");
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
800 return NGX_ERROR;
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
801
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
802 case 'g':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
803 if (*p) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
804 ngx_conf_params = p;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
805 goto next;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
806 }
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
807
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
808 if (argv[++i]) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
809 ngx_conf_params = (u_char *) argv[i];
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
810 goto next;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
811 }
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
812
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
813 ngx_log_stderr(0, "option \"-g\" requires parameter");
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
814 return NGX_ERROR;
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
815
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
816 case 's':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
817 if (*p) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
818 ngx_signal = (char *) p;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
819
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
820 } else if (argv[++i]) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
821 ngx_signal = argv[i];
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
822
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
823 } else {
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
824 ngx_log_stderr(0, "option \"-s\" requires parameter");
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
825 return NGX_ERROR;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
826 }
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
827
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
828 if (ngx_strcmp(ngx_signal, "stop") == 0
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
829 || ngx_strcmp(ngx_signal, "quit") == 0
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
830 || ngx_strcmp(ngx_signal, "reopen") == 0
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
831 || ngx_strcmp(ngx_signal, "reload") == 0)
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
832 {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
833 ngx_process = NGX_PROCESS_SIGNALLER;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
834 goto next;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
835 }
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
836
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
837 ngx_log_stderr(0, "invalid option: \"-s %s\"", ngx_signal);
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
838 return NGX_ERROR;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
839
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
840 default:
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
841 ngx_log_stderr(0, "invalid option: \"%c\"", *(p - 1));
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
842 return NGX_ERROR;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
843 }
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
844 }
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
845
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
846 next:
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
847
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
848 continue;
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
849 }
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
850
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
851 return NGX_OK;
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
852 }
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
853
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
854
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
855 static ngx_int_t
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
856 ngx_save_argv(ngx_cycle_t *cycle, int argc, char *const *argv)
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
857 {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
858 #if (NGX_FREEBSD)
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
859
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
860 ngx_os_argv = (char **) argv;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
861 ngx_argc = argc;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
862 ngx_argv = (char **) argv;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
863
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
864 #else
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
865 size_t len;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
866 ngx_int_t i;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
867
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
868 ngx_os_argv = (char **) argv;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
869 ngx_argc = argc;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
870
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
871 ngx_argv = ngx_alloc((argc + 1) * sizeof(char *), cycle->log);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
872 if (ngx_argv == NULL) {
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
873 return NGX_ERROR;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
874 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
875
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
876 for (i = 0; i < argc; i++) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
877 len = ngx_strlen(argv[i]) + 1;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
878
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
879 ngx_argv[i] = ngx_alloc(len, cycle->log);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
880 if (ngx_argv[i] == NULL) {
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
881 return NGX_ERROR;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
882 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
883
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
884 (void) ngx_cpystrn((u_char *) ngx_argv[i], (u_char *) argv[i], len);
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
885 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
886
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
887 ngx_argv[i] = NULL;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
888
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
889 #endif
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
890
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
891 ngx_os_environ = environ;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
892
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
893 return NGX_OK;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
894 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
895
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
896
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
897 static ngx_int_t
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
898 ngx_process_options(ngx_cycle_t *cycle)
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
899 {
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
900 u_char *p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
901 size_t len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
902
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
903 if (ngx_prefix) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
904 len = ngx_strlen(ngx_prefix);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
905 p = ngx_prefix;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
906
4783
2220ce29b9d3 Fixed the -p parameter handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4593
diff changeset
907 if (len && !ngx_path_separator(p[len - 1])) {
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
908 p = ngx_pnalloc(cycle->pool, len + 1);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
909 if (p == NULL) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
910 return NGX_ERROR;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
911 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
912
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
913 ngx_memcpy(p, ngx_prefix, len);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
914 p[len++] = '/';
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
915 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
916
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
917 cycle->conf_prefix.len = len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
918 cycle->conf_prefix.data = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
919 cycle->prefix.len = len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
920 cycle->prefix.data = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
921
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
922 } else {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
923
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
924 #ifndef NGX_PREFIX
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
925
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
926 p = ngx_pnalloc(cycle->pool, NGX_MAX_PATH);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
927 if (p == NULL) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
928 return NGX_ERROR;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
929 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
930
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
931 if (ngx_getcwd(p, NGX_MAX_PATH) == 0) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
932 ngx_log_stderr(ngx_errno, "[emerg]: " ngx_getcwd_n " failed");
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
933 return NGX_ERROR;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
934 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
935
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
936 len = ngx_strlen(p);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
937
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
938 p[len++] = '/';
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
939
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
940 cycle->conf_prefix.len = len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
941 cycle->conf_prefix.data = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
942 cycle->prefix.len = len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
943 cycle->prefix.data = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
944
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
945 #else
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
946
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
947 #ifdef NGX_CONF_PREFIX
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
948 ngx_str_set(&cycle->conf_prefix, NGX_CONF_PREFIX);
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
949 #else
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
950 ngx_str_set(&cycle->conf_prefix, NGX_PREFIX);
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
951 #endif
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
952 ngx_str_set(&cycle->prefix, NGX_PREFIX);
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
953
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
954 #endif
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
955 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
956
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
957 if (ngx_conf_file) {
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
958 cycle->conf_file.len = ngx_strlen(ngx_conf_file);
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
959 cycle->conf_file.data = ngx_conf_file;
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
960
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
961 } else {
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
962 ngx_str_set(&cycle->conf_file, NGX_CONF_PATH);
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
963 }
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
964
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5317
diff changeset
965 if (ngx_conf_full_name(cycle, &cycle->conf_file, 0) != NGX_OK) {
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
966 return NGX_ERROR;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
967 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
968
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
969 for (p = cycle->conf_file.data + cycle->conf_file.len - 1;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
970 p > cycle->conf_file.data;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
971 p--)
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
972 {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
973 if (ngx_path_separator(*p)) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
974 cycle->conf_prefix.len = p - ngx_cycle->conf_file.data + 1;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
975 cycle->conf_prefix.data = ngx_cycle->conf_file.data;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
976 break;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
977 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
978 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
979
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
980 if (ngx_conf_params) {
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
981 cycle->conf_param.len = ngx_strlen(ngx_conf_params);
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
982 cycle->conf_param.data = ngx_conf_params;
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
983 }
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
984
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
985 if (ngx_test_config) {
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
986 cycle->log->log_level = NGX_LOG_INFO;
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
987 }
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
988
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
989 return NGX_OK;
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
990 }
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
991
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
992
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
993 static void *
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
994 ngx_core_module_create_conf(ngx_cycle_t *cycle)
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
995 {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
996 ngx_core_conf_t *ccf;
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
997
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
998 ccf = ngx_pcalloc(cycle->pool, sizeof(ngx_core_conf_t));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
999 if (ccf == NULL) {
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1000 return NULL;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
1001 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1002
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1003 /*
3480
f4957081d935 fix comments
Igor Sysoev <igor@sysoev.ru>
parents: 3388
diff changeset
1004 * set by ngx_pcalloc()
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
1005 *
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1006 * ccf->pid = NULL;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
1007 * ccf->oldpid = NULL;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1008 * ccf->priority = 0;
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1009 * ccf->cpu_affinity_auto = 0;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1010 * ccf->cpu_affinity_n = 0;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1011 * ccf->cpu_affinity = NULL;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
1012 */
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1013
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1014 ccf->daemon = NGX_CONF_UNSET;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1015 ccf->master = NGX_CONF_UNSET;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
1016 ccf->timer_resolution = NGX_CONF_UNSET_MSEC;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
1017
300
502b03d9d2a3 nginx-0.0.3-2004-03-31-00:31:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1018 ccf->worker_processes = NGX_CONF_UNSET;
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1019 ccf->debug_points = NGX_CONF_UNSET;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
1020
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
1021 ccf->rlimit_nofile = NGX_CONF_UNSET;
3762
89002ac695e5 worker_rlimit_core should be off_t
Igor Sysoev <igor@sysoev.ru>
parents: 3750
diff changeset
1022 ccf->rlimit_core = NGX_CONF_UNSET;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
1023
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1024 ccf->user = (ngx_uid_t) NGX_CONF_UNSET_UINT;
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1025 ccf->group = (ngx_gid_t) NGX_CONF_UNSET_UINT;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
1026
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1027 if (ngx_array_init(&ccf->env, cycle->pool, 1, sizeof(ngx_str_t))
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1028 != NGX_OK)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1029 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1030 return NULL;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1031 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1032
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1033 return ccf;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1034 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1035
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1036
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1037 static char *
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1038 ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf)
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1039 {
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1040 ngx_core_conf_t *ccf = conf;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1041
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1042 ngx_conf_init_value(ccf->daemon, 1);
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1043 ngx_conf_init_value(ccf->master, 1);
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
1044 ngx_conf_init_msec_value(ccf->timer_resolution, 0);
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
1045
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1046 ngx_conf_init_value(ccf->worker_processes, 1);
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1047 ngx_conf_init_value(ccf->debug_points, 0);
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1048
4549
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
1049 #if (NGX_HAVE_CPU_AFFINITY)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1050
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1051 if (!ccf->cpu_affinity_auto
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1052 && ccf->cpu_affinity_n
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1053 && ccf->cpu_affinity_n != 1
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1054 && ccf->cpu_affinity_n != (ngx_uint_t) ccf->worker_processes)
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1055 {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1056 ngx_log_error(NGX_LOG_WARN, cycle->log, 0,
4549
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
1057 "the number of \"worker_processes\" is not equal to "
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
1058 "the number of \"worker_cpu_affinity\" masks, "
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1059 "using last mask for remaining worker processes");
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1060 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1061
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1062 #endif
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1063
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1064
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1065 if (ccf->pid.len == 0) {
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
1066 ngx_str_set(&ccf->pid, NGX_PID_PATH);
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1067 }
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1068
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5317
diff changeset
1069 if (ngx_conf_full_name(cycle, &ccf->pid, 0) != NGX_OK) {
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1070 return NGX_CONF_ERROR;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1071 }
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1072
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1073 ccf->oldpid.len = ccf->pid.len + sizeof(NGX_OLDPID_EXT);
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1074
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1075 ccf->oldpid.data = ngx_pnalloc(cycle->pool, ccf->oldpid.len);
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1076 if (ccf->oldpid.data == NULL) {
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1077 return NGX_CONF_ERROR;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1078 }
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1079
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1080 ngx_memcpy(ngx_cpymem(ccf->oldpid.data, ccf->pid.data, ccf->pid.len),
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1081 NGX_OLDPID_EXT, sizeof(NGX_OLDPID_EXT));
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1082
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1083
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1084 #if !(NGX_WIN32)
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1085
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1086 if (ccf->user == (uid_t) NGX_CONF_UNSET_UINT && geteuid() == 0) {
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1087 struct group *grp;
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1088 struct passwd *pwd;
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1089
1288
eb232400e829 reset errno
Igor Sysoev <igor@sysoev.ru>
parents: 1080
diff changeset
1090 ngx_set_errno(0);
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1091 pwd = getpwnam(NGX_USER);
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1092 if (pwd == NULL) {
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1093 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1094 "getpwnam(\"" NGX_USER "\") failed");
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1095 return NGX_CONF_ERROR;
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1096 }
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1097
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1098 ccf->username = NGX_USER;
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1099 ccf->user = pwd->pw_uid;
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1100
1288
eb232400e829 reset errno
Igor Sysoev <igor@sysoev.ru>
parents: 1080
diff changeset
1101 ngx_set_errno(0);
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1102 grp = getgrnam(NGX_GROUP);
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1103 if (grp == NULL) {
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1104 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1105 "getgrnam(\"" NGX_GROUP "\") failed");
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1106 return NGX_CONF_ERROR;
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1107 }
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1108
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1109 ccf->group = grp->gr_gid;
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1110 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
1111
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1112
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1113 if (ccf->lock_file.len == 0) {
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
1114 ngx_str_set(&ccf->lock_file, NGX_LOCK_PATH);
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1115 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1116
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5317
diff changeset
1117 if (ngx_conf_full_name(cycle, &ccf->lock_file, 0) != NGX_OK) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1118 return NGX_CONF_ERROR;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1119 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1120
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1121 {
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1122 ngx_str_t lock_file;
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1123
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1124 lock_file = cycle->old_cycle->lock_file;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1125
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1126 if (lock_file.len) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1127 lock_file.len--;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1128
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1129 if (ccf->lock_file.len != lock_file.len
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1130 || ngx_strncmp(ccf->lock_file.data, lock_file.data, lock_file.len)
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1131 != 0)
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1132 {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1133 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1134 "\"lock_file\" could not be changed, ignored");
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1135 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1136
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1137 cycle->lock_file.len = lock_file.len + 1;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1138 lock_file.len += sizeof(".accept");
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1139
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1140 cycle->lock_file.data = ngx_pstrdup(cycle->pool, &lock_file);
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1141 if (cycle->lock_file.data == NULL) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1142 return NGX_CONF_ERROR;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1143 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1144
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1145 } else {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1146 cycle->lock_file.len = ccf->lock_file.len + 1;
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1147 cycle->lock_file.data = ngx_pnalloc(cycle->pool,
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1148 ccf->lock_file.len + sizeof(".accept"));
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1149 if (cycle->lock_file.data == NULL) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1150 return NGX_CONF_ERROR;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1151 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1152
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1153 ngx_memcpy(ngx_cpymem(cycle->lock_file.data, ccf->lock_file.data,
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1154 ccf->lock_file.len),
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1155 ".accept", sizeof(".accept"));
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1156 }
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1157 }
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1158
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1159 #endif
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1160
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1161 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
1162 }
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1163
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1164
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1165 static char *
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1166 ngx_set_user(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1167 {
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1168 #if (NGX_WIN32)
278
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1169
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1170 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1171 "\"user\" is not supported, ignored");
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1172
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1173 return NGX_CONF_OK;
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1174
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1175 #else
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1176
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1177 ngx_core_conf_t *ccf = conf;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1178
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1179 char *group;
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1180 struct passwd *pwd;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1181 struct group *grp;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1182 ngx_str_t *value;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1183
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1184 if (ccf->user != (uid_t) NGX_CONF_UNSET_UINT) {
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1185 return "is duplicate";
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1186 }
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1187
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1188 if (geteuid() != 0) {
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1189 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1190 "the \"user\" directive makes sense only "
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1191 "if the master process runs "
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1192 "with super-user privileges, ignored");
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1193 return NGX_CONF_OK;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1194 }
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1195
6264
7ac57369036c Style: unneeded casts of cf->args->elts removed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6257
diff changeset
1196 value = cf->args->elts;
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1197
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1198 ccf->username = (char *) value[1].data;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1199
1288
eb232400e829 reset errno
Igor Sysoev <igor@sysoev.ru>
parents: 1080
diff changeset
1200 ngx_set_errno(0);
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 289
diff changeset
1201 pwd = getpwnam((const char *) value[1].data);
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1202 if (pwd == NULL) {
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1203 ngx_conf_log_error(NGX_LOG_EMERG, cf, ngx_errno,
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1204 "getpwnam(\"%s\") failed", value[1].data);
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1205 return NGX_CONF_ERROR;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1206 }
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1207
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1208 ccf->user = pwd->pw_uid;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1209
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1210 group = (char *) ((cf->args->nelts == 2) ? value[1].data : value[2].data);
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1211
1288
eb232400e829 reset errno
Igor Sysoev <igor@sysoev.ru>
parents: 1080
diff changeset
1212 ngx_set_errno(0);
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1213 grp = getgrnam(group);
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1214 if (grp == NULL) {
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1215 ngx_conf_log_error(NGX_LOG_EMERG, cf, ngx_errno,
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1216 "getgrnam(\"%s\") failed", group);
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1217 return NGX_CONF_ERROR;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1218 }
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1219
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1220 ccf->group = grp->gr_gid;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1221
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1222 return NGX_CONF_OK;
278
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1223
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1224 #endif
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1225 }
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1226
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1227
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1228 static char *
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1229 ngx_set_env(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1230 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1231 ngx_core_conf_t *ccf = conf;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1232
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1233 ngx_str_t *value, *var;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1234 ngx_uint_t i;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1235
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1236 var = ngx_array_push(&ccf->env);
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1237 if (var == NULL) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1238 return NGX_CONF_ERROR;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1239 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1240
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1241 value = cf->args->elts;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1242 *var = value[1];
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1243
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1244 for (i = 0; i < value[1].len; i++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1245
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1246 if (value[1].data[i] == '=') {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1247
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1248 var->len = i;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1249
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1250 return NGX_CONF_OK;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1251 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1252 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1253
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1254 return NGX_CONF_OK;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1255 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1256
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1257
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1258 static char *
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1259 ngx_set_priority(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1260 {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1261 ngx_core_conf_t *ccf = conf;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1262
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1263 ngx_str_t *value;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1264 ngx_uint_t n, minus;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1265
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1266 if (ccf->priority != 0) {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1267 return "is duplicate";
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1268 }
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1269
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1270 value = cf->args->elts;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1271
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1272 if (value[1].data[0] == '-') {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1273 n = 1;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1274 minus = 1;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1275
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1276 } else if (value[1].data[0] == '+') {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1277 n = 1;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1278 minus = 0;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1279
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1280 } else {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1281 n = 0;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1282 minus = 0;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1283 }
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1284
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1285 ccf->priority = ngx_atoi(&value[1].data[n], value[1].len - n);
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1286 if (ccf->priority == NGX_ERROR) {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1287 return "invalid number";
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1288 }
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1289
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1290 if (minus) {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1291 ccf->priority = -ccf->priority;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1292 }
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1293
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1294 return NGX_CONF_OK;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1295 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1296
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1297
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1298 static char *
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1299 ngx_set_cpu_affinity(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1300 {
4549
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
1301 #if (NGX_HAVE_CPU_AFFINITY)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1302 ngx_core_conf_t *ccf = conf;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1303
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1304 u_char ch, *p;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1305 ngx_str_t *value;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1306 ngx_uint_t i, n;
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1307 ngx_cpuset_t *mask;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1308
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1309 if (ccf->cpu_affinity) {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1310 return "is duplicate";
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1311 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1312
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1313 mask = ngx_palloc(cf->pool, (cf->args->nelts - 1) * sizeof(ngx_cpuset_t));
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1314 if (mask == NULL) {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1315 return NGX_CONF_ERROR;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1316 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1317
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1318 ccf->cpu_affinity_n = cf->args->nelts - 1;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1319 ccf->cpu_affinity = mask;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1320
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1321 value = cf->args->elts;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1322
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1323 if (ngx_strcmp(value[1].data, "auto") == 0) {
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1324
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1325 if (cf->args->nelts > 3) {
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1326 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1327 "invalid number of arguments in "
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1328 "\"worker_cpu_affinity\" directive");
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1329 return NGX_CONF_ERROR;
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1330 }
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1331
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1332 ccf->cpu_affinity_auto = 1;
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1333
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1334 CPU_ZERO(&mask[0]);
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1335 for (i = 0; i < (ngx_uint_t) ngx_min(ngx_ncpu, CPU_SETSIZE); i++) {
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1336 CPU_SET(i, &mask[0]);
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1337 }
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1338
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1339 n = 2;
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1340
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1341 } else {
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1342 n = 1;
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1343 }
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1344
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1345 for ( /* void */ ; n < cf->args->nelts; n++) {
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1346
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1347 if (value[n].len > CPU_SETSIZE) {
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1348 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1349 "\"worker_cpu_affinity\" supports up to %d CPUs only",
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1350 CPU_SETSIZE);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1351 return NGX_CONF_ERROR;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1352 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1353
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1354 i = 0;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1355 CPU_ZERO(&mask[n - 1]);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1356
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1357 for (p = value[n].data + value[n].len - 1;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1358 p >= value[n].data;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1359 p--)
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1360 {
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1361 ch = *p;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1362
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1363 if (ch == ' ') {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1364 continue;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1365 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1366
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1367 i++;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1368
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1369 if (ch == '0') {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1370 continue;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1371 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1372
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1373 if (ch == '1') {
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1374 CPU_SET(i - 1, &mask[n - 1]);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1375 continue;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1376 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1377
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1378 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1379 "invalid character \"%c\" in \"worker_cpu_affinity\"",
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1380 ch);
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
1381 return NGX_CONF_ERROR;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1382 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1383 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1384
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1385 #else
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1386
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1387 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1388 "\"worker_cpu_affinity\" is not supported "
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1389 "on this platform, ignored");
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1390 #endif
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1391
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1392 return NGX_CONF_OK;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1393 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1394
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1395
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1396 ngx_cpuset_t *
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1397 ngx_get_cpu_affinity(ngx_uint_t n)
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1398 {
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1399 #if (NGX_HAVE_CPU_AFFINITY)
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1400 ngx_uint_t i, j;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1401 ngx_cpuset_t *mask;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1402 ngx_core_conf_t *ccf;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1403
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1404 static ngx_cpuset_t result;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1405
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1406 ccf = (ngx_core_conf_t *) ngx_get_conf(ngx_cycle->conf_ctx,
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1407 ngx_core_module);
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1408
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1409 if (ccf->cpu_affinity == NULL) {
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1410 return NULL;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1411 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1412
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1413 if (ccf->cpu_affinity_auto) {
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1414 mask = &ccf->cpu_affinity[ccf->cpu_affinity_n - 1];
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1415
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1416 for (i = 0, j = n; /* void */ ; i++) {
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1417
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1418 if (CPU_ISSET(i % CPU_SETSIZE, mask) && j-- == 0) {
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1419 break;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1420 }
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1421
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1422 if (i == CPU_SETSIZE && j == n) {
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1423 /* empty mask */
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1424 return NULL;
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1425 }
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1426
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1427 /* void */
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1428 }
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1429
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1430 CPU_ZERO(&result);
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1431 CPU_SET(i % CPU_SETSIZE, &result);
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1432
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1433 return &result;
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1434 }
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1435
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1436 if (ccf->cpu_affinity_n > n) {
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1437 return &ccf->cpu_affinity[n];
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1438 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1439
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1440 return &ccf->cpu_affinity[ccf->cpu_affinity_n - 1];
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1441
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1442 #else
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1443
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1444 return NULL;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1445
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1446 #endif
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1447 }
4890
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1448
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1449
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1450 static char *
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1451 ngx_set_worker_processes(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1452 {
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1453 ngx_str_t *value;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1454 ngx_core_conf_t *ccf;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1455
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1456 ccf = (ngx_core_conf_t *) conf;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1457
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1458 if (ccf->worker_processes != NGX_CONF_UNSET) {
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1459 return "is duplicate";
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1460 }
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1461
6264
7ac57369036c Style: unneeded casts of cf->args->elts removed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6257
diff changeset
1462 value = cf->args->elts;
4890
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1463
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1464 if (ngx_strcmp(value[1].data, "auto") == 0) {
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1465 ccf->worker_processes = ngx_ncpu;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1466 return NGX_CONF_OK;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1467 }
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1468
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1469 ccf->worker_processes = ngx_atoi(value[1].data, value[1].len);
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1470
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1471 if (ccf->worker_processes == NGX_ERROR) {
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1472 return "invalid value";
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1473 }
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1474
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1475 return NGX_CONF_OK;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1476 }
6383
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1477
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1478
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1479 static char *
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1480 ngx_load_module(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1481 {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1482 #if (NGX_HAVE_DLOPEN)
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1483 void *handle;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1484 char **names, **order;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1485 ngx_str_t *value, file;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1486 ngx_uint_t i;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1487 ngx_module_t *module, **modules;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1488 ngx_pool_cleanup_t *cln;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1489
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1490 if (cf->cycle->modules_used) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1491 return "is specified too late";
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1492 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1493
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1494 value = cf->args->elts;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1495
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1496 file = value[1];
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1497
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1498 if (ngx_conf_full_name(cf->cycle, &file, 0) != NGX_OK) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1499 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1500 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1501
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1502 cln = ngx_pool_cleanup_add(cf->cycle->pool, 0);
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1503 if (cln == NULL) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1504 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1505 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1506
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1507 handle = ngx_dlopen(file.data);
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1508 if (handle == NULL) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1509 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1510 ngx_dlopen_n " \"%s\" failed (%s)",
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1511 file.data, ngx_dlerror());
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1512 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1513 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1514
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1515 cln->handler = ngx_unload_module;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1516 cln->data = handle;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1517
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1518 modules = ngx_dlsym(handle, "ngx_modules");
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1519 if (modules == NULL) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1520 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1521 ngx_dlsym_n " \"%V\", \"%s\" failed (%s)",
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1522 &value[1], "ngx_modules", ngx_dlerror());
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1523 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1524 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1525
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1526 names = ngx_dlsym(handle, "ngx_module_names");
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1527 if (names == NULL) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1528 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1529 ngx_dlsym_n " \"%V\", \"%s\" failed (%s)",
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1530 &value[1], "ngx_module_names", ngx_dlerror());
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1531 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1532 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1533
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1534 order = ngx_dlsym(handle, "ngx_module_order");
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1535
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1536 for (i = 0; modules[i]; i++) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1537 module = modules[i];
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1538 module->name = names[i];
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1539
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1540 if (ngx_add_module(cf, &file, module, order) != NGX_OK) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1541 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1542 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1543
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6446
diff changeset
1544 ngx_log_debug2(NGX_LOG_DEBUG_CORE, cf->log, 0, "module: %s i:%ui",
6383
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1545 module->name, module->index);
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1546 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1547
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1548 return NGX_CONF_OK;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1549
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1550 #else
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1551
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1552 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1553 "\"load_module\" is not supported "
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1554 "on this platform");
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1555 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1556
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1557 #endif
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1558 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1559
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1560
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1561 #if (NGX_HAVE_DLOPEN)
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1562
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1563 static void
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1564 ngx_unload_module(void *data)
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1565 {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1566 void *handle = data;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1567
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1568 if (ngx_dlclose(handle) != 0) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1569 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1570 ngx_dlclose_n " failed (%s)", ngx_dlerror());
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1571 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1572 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1573
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1574 #endif