annotate src/core/nginx.c @ 9270:3d455e37abf8

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