annotate src/core/nginx.c @ 9268:6a3ee145d0b5

Core: made it possible to disable PID files with "pid off". While it is not generally recommended, this might be beneficial in some configurations, such as with immutable images and direct control by a service manager.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 13 May 2024 06:13:03 +0300
parents c209dc4eed17
children 3d455e37abf8
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
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
345 if (ngx_init_signals(cycle->log) != NGX_OK) {
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
346 return 1;
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
347 }
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
348
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
349 if (!ngx_inherited && ccf->daemon) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
350 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
351 return 1;
be27f922b9a2 nginx-0.0.1-2003-07-10-20:26:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 114
diff changeset
352 }
366
e411b1482ee3 nginx-0.0.7-2004-06-23-19:18:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 337
diff changeset
353
e411b1482ee3 nginx-0.0.7-2004-06-23-19:18:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 337
diff changeset
354 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
355 }
be27f922b9a2 nginx-0.0.1-2003-07-10-20:26:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 114
diff changeset
356
4293
3bae3d8fb573 Fixed handling of SIGWINCH/NOACCEPT signal.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4283
diff changeset
357 if (ngx_inherited) {
3bae3d8fb573 Fixed handling of SIGWINCH/NOACCEPT signal.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4283
diff changeset
358 ngx_daemonized = 1;
3bae3d8fb573 Fixed handling of SIGWINCH/NOACCEPT signal.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4283
diff changeset
359 }
3bae3d8fb573 Fixed handling of SIGWINCH/NOACCEPT signal.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4283
diff changeset
360
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
361 #endif
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
362
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
363 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
364 return 1;
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
365 }
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
366
5260
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5240
diff changeset
367 if (ngx_log_redirect_stderr(cycle) != NGX_OK) {
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5240
diff changeset
368 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
369 }
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
370
3199
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
371 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
372 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
373 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
374 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
375 }
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
376 }
b242aaf1dcfa nginx did not close log file set by --error-log-path,
Igor Sysoev <igor@sysoev.ru>
parents: 3177
diff changeset
377
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
378 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
379
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
380 if (ngx_process == NGX_PROCESS_SINGLE) {
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
381 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
382
56496082668b nginx-0.0.3-2004-04-16-09:14:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 317
diff changeset
383 } else {
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
384 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
385 }
220
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
386
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
387 return 0;
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
388 }
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
389
4f81b931e9ff nginx-0.0.1-2004-01-08-11:47:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
390
6257
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
391 static void
6446
0ff7eff48c7e Fix build with -Wmissing-prototypes.
Piotr Sikora <piotrsikora@google.com>
parents: 6402
diff changeset
392 ngx_show_version_info(void)
6257
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
393 {
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
394 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
395
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
396 if (ngx_show_help) {
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
397 ngx_write_stderr(
7744
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
398 "Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]" NGX_LINEFEED
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
399 " [-e filename] [-c filename] [-g directives]"
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
400 NGX_LINEFEED NGX_LINEFEED
6257
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
401 "Options:" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
402 " -?,-h : this help" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
403 " -v : show version and exit" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
404 " -V : show version and configure options then exit"
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
405 NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
406 " -t : test configuration and exit" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
407 " -T : test configuration, dump it and exit"
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
408 NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
409 " -q : suppress non-error messages "
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
410 "during configuration testing" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
411 " -s signal : send signal to a master process: "
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
412 "stop, quit, reopen, reload" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
413 #ifdef NGX_PREFIX
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
414 " -p prefix : set prefix path (default: " NGX_PREFIX ")"
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
415 NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
416 #else
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
417 " -p prefix : set prefix path (default: NONE)" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
418 #endif
7744
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
419 " -e filename : set error log file (default: "
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
420 #ifdef NGX_ERROR_LOG_STDERR
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
421 "stderr)" NGX_LINEFEED
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
422 #else
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
423 NGX_ERROR_LOG_PATH ")" NGX_LINEFEED
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
424 #endif
6257
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
425 " -c filename : set configuration file (default: " NGX_CONF_PATH
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
426 ")" NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
427 " -g directives : set global directives out of configuration "
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
428 "file" NGX_LINEFEED NGX_LINEFEED
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
429 );
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
430 }
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
431
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
432 if (ngx_show_configure) {
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
433
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
434 #ifdef NGX_COMPILER
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
435 ngx_write_stderr("built by " NGX_COMPILER NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
436 #endif
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 #if (NGX_SSL)
6492
3b77efe05b92 SSL: SSLeay_version() is deprecated in OpenSSL 1.1.0.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6480
diff changeset
439 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
440 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
441 } else {
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
442 ngx_write_stderr("built with " OPENSSL_VERSION_TEXT
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
443 " (running with ");
6492
3b77efe05b92 SSL: SSLeay_version() is deprecated in OpenSSL 1.1.0.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6480
diff changeset
444 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
445 ngx_write_stderr(")" NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
446 }
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
447 #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
448 ngx_write_stderr("TLS SNI support enabled" 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("TLS SNI support disabled" NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
451 #endif
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
452 #endif
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
453
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
454 ngx_write_stderr("configure arguments:" NGX_CONFIGURE NGX_LINEFEED);
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
455 }
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
456 }
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
457
5eb4d7541107 Extract out version info function.
Kurtis Nusbaum <klnusbaum@gmail.com>
parents: 6187
diff changeset
458
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
459 static ngx_int_t
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
460 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
461 {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
462 u_char *p, *v, *inherited;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
463 ngx_int_t s;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
464 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
465
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 289
diff changeset
466 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
467
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
468 if (inherited == NULL) {
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
469 return NGX_OK;
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
470 }
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
471
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
472 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
473 "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
474
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
475 if (ngx_array_init(&cycle->listening, cycle->pool, 10,
745
95aa79944291 add sun4v,
Igor Sysoev <igor@sysoev.ru>
parents: 641
diff changeset
476 sizeof(ngx_listening_t))
2536
a6d6d762c554 small optimization: " == NGX_ERROR" > " != NGX_OK"
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
477 != NGX_OK)
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
478 {
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
479 return NGX_ERROR;
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
480 }
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
481
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
482 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
483 if (*p == ':' || *p == ';') {
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
484 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
485 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
486 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
487 "invalid socket number \"%s\" in " NGINX_VAR
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
488 " environment variable, ignoring the rest"
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
489 " 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
490 break;
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
491 }
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
492
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 289
diff changeset
493 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
494
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
495 ls = ngx_array_push(&cycle->listening);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
496 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
497 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
498 }
219
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
499
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
500 ngx_memzero(ls, sizeof(ngx_listening_t));
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
501
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
502 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
503 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
504 }
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
505 }
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
506
6399
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
507 if (v != p) {
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
508 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
509 "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
510 " environment variable, ignoring", v);
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
511 }
50fb3fd79f76 Core: improved logging on invalid NGINX variable (ticket #900).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6383
diff changeset
512
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
513 ngx_inherited = 1;
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
514
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
515 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
516 }
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
517
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
518
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
519 char **
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
520 ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
521 {
9134
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
522 char **p, **env, *str;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
523 size_t len;
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
524 ngx_str_t *var;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
525 ngx_uint_t i, n;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
526 ngx_core_conf_t *ccf;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
527 ngx_pool_cleanup_t *cln;
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
528
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
529 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
530
1080
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
531 if (last == NULL && ccf->environment) {
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
532 return ccf->environment;
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
533 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
534
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
535 var = ccf->env.elts;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
536
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
537 for (i = 0; i < ccf->env.nelts; i++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
538 if (ngx_strcmp(var[i].data, "TZ") == 0
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
539 || ngx_strncmp(var[i].data, "TZ=", 3) == 0)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
540 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
541 goto tz_found;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
542 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
543 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
544
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
545 var = ngx_array_push(&ccf->env);
1318
114428c61a3a fix potential segfault,
Igor Sysoev <igor@sysoev.ru>
parents: 1288
diff changeset
546 if (var == NULL) {
114428c61a3a fix potential segfault,
Igor Sysoev <igor@sysoev.ru>
parents: 1288
diff changeset
547 return NULL;
114428c61a3a fix potential segfault,
Igor Sysoev <igor@sysoev.ru>
parents: 1288
diff changeset
548 }
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
549
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
550 var->len = 2;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
551 var->data = (u_char *) "TZ";
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
552
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
553 var = ccf->env.elts;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
554
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
555 tz_found:
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
556
1080
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
557 n = 0;
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
558
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
559 for (i = 0; i < ccf->env.nelts; i++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
560
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
561 if (var[i].data[var[i].len] == '=') {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
562 n++;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
563 continue;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
564 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
565
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
566 for (p = ngx_os_environ; *p; p++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
567
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
568 if (ngx_strncmp(*p, var[i].data, var[i].len) == 0
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
569 && (*p)[var[i].len] == '=')
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
570 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
571 n++;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
572 break;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
573 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
574 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
575 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
576
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
577 if (last) {
1080
681e048981a6 fix online upgrade
Igor Sysoev <igor@sysoev.ru>
parents: 1069
diff changeset
578 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
579 if (env == NULL) {
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
580 return NULL;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
581 }
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
582
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
583 *last = n;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
584
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
585 } else {
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
586 cln = ngx_pool_cleanup_add(cycle->pool, 0);
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
587 if (cln == 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 }
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
590
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
591 env = ngx_alloc((n + 1) * sizeof(char *), cycle->log);
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
592 if (env == NULL) {
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
593 return NULL;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
594 }
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
595
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
596 cln->handler = ngx_cleanup_environment;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
597 cln->data = env;
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
598 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
599
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
600 n = 0;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
601
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
602 for (i = 0; i < ccf->env.nelts; i++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
603
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
604 if (var[i].data[var[i].len] == '=') {
9134
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
605
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
606 if (last) {
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
607 env[n++] = (char *) var[i].data;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
608 continue;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
609 }
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
610
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
611 cln = ngx_pool_cleanup_add(cycle->pool, 0);
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
612 if (cln == NULL) {
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
613 return NULL;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
614 }
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
615
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
616 len = ngx_strlen(var[i].data) + 1;
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 str = ngx_alloc(len, cycle->log);
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
619 if (str == NULL) {
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
620 return NULL;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
621 }
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 ngx_memcpy(str, var[i].data, len);
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
624
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
625 cln->handler = ngx_cleanup_environment_variable;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
626 cln->data = str;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
627
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
628 env[n++] = str;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
629
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
630 continue;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
631 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
632
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
633 for (p = ngx_os_environ; *p; p++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
634
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
635 if (ngx_strncmp(*p, var[i].data, var[i].len) == 0
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
636 && (*p)[var[i].len] == '=')
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
637 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
638 env[n++] = *p;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
639 break;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
640 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
641 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
642 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
643
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
644 env[n] = NULL;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
645
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
646 if (last == NULL) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
647 ccf->environment = env;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
648 environ = env;
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 return env;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
652 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
653
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
654
6822
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
655 static void
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
656 ngx_cleanup_environment(void *data)
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
657 {
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
658 char **env = data;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
659
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
660 if (environ == env) {
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
661
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
662 /*
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
663 * 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
664 * the only option is to leak it
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
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
667 return;
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
668 }
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 ngx_free(env);
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
671 }
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
672
c045b4926b2c Core: fixed environment on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6492
diff changeset
673
9134
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
674 static void
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
675 ngx_cleanup_environment_variable(void *data)
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
676 {
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
677 char *var = data;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
678
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
679 char **p;
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
680
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
681 for (p = environ; *p; p++) {
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
682
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
683 /*
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
684 * 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
685 * the only option is to leak it
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
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
688 if (*p == var) {
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
689 return;
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
c209dc4eed17 Core: fixed environment variables on exit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8676
diff changeset
693 ngx_free(var);
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
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
697 ngx_pid_t
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
698 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
699 {
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
700 char **env, *var;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
701 u_char *p;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
702 ngx_uint_t i, n;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
703 ngx_pid_t pid;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
704 ngx_exec_ctx_t ctx;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
705 ngx_core_conf_t *ccf;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
706 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
707
2745
1983932b8075 pass command lines options to workers
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
708 ngx_memzero(&ctx, sizeof(ngx_exec_ctx_t));
1983932b8075 pass command lines options to workers
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
709
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
710 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
711 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
712 ctx.argv = argv;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
713
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
714 n = 2;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
715 env = ngx_set_environment(cycle, &n);
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
716 if (env == NULL) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
717 return NGX_INVALID_PID;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
718 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
719
282
30310107dbc9 nginx-0.0.2-2004-03-09-22:47:07 import
Igor Sysoev <igor@sysoev.ru>
parents: 279
diff changeset
720 var = ngx_alloc(sizeof(NGINX_VAR)
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
721 + 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
722 cycle->log);
5116
4d7027deb1bb Core: guard against failed allocation during binary upgrade.
Ruslan Ermilov <ru@nginx.com>
parents: 4890
diff changeset
723 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
724 ngx_free(env);
5116
4d7027deb1bb Core: guard against failed allocation during binary upgrade.
Ruslan Ermilov <ru@nginx.com>
parents: 4890
diff changeset
725 return NGX_INVALID_PID;
4d7027deb1bb Core: guard against failed allocation during binary upgrade.
Ruslan Ermilov <ru@nginx.com>
parents: 4890
diff changeset
726 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
727
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
728 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
729
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
730 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
731 for (i = 0; i < cycle->listening.nelts; i++) {
8676
7df607cb2d11 QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents: 7744
diff changeset
732 if (ls[i].ignore) {
7df607cb2d11 QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents: 7744
diff changeset
733 continue;
7df607cb2d11 QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents: 7744
diff changeset
734 }
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
735 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
736 }
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
737
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
738 *p = '\0';
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
739
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
740 env[n++] = var;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
741
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
742 #if (NGX_SETPROCTITLE_USES_ENV)
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
743
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
744 /* 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
745
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
746 env[n++] = "SPARE=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
747 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
748 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
749 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
750 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
751
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
752 #endif
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] = NULL;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
755
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
756 #if (NGX_DEBUG)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
757 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
758 char **e;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
759 for (e = env; *e; e++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
760 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, 0, "env: %s", *e);
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
761 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
762 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
763 #endif
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
764
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
765 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
766
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
767 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
768
9268
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 9134
diff changeset
769 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
770 && 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
771 {
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
772 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
773 ngx_rename_file_n " %s to %s failed "
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
774 "before executing new binary process \"%s\"",
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
775 ccf->pid.data, ccf->oldpid.data, argv[0]);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
776
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
777 ngx_free(env);
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
778 ngx_free(var);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
779
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
780 return NGX_INVALID_PID;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
781 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
782
279
b79f021a644a nginx-0.0.2-2004-03-04-19:34:23 import
Igor Sysoev <igor@sysoev.ru>
parents: 278
diff changeset
783 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
784
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
785 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
786 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
787 && 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
788 == NGX_FILE_ERROR)
5137
f941cf265cc5 Use NGX_FILE_ERROR for handling file operations errors.
Valentin Bartenev <vbart@nginx.com>
parents: 5122
diff changeset
789 {
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
790 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
791 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
792 "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
793 ccf->oldpid.data, ccf->pid.data, argv[0]);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
794 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
795 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
796
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
797 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
798 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
799
b0c1e21e68db nginx-0.0.1-2004-01-14-00:33:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 225
diff changeset
800 return pid;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
801 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
802
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
803
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
804 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
805 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
806 {
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
807 u_char *p;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
808 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
809
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
810 for (i = 1; i < argc; i++) {
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
811
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
812 p = (u_char *) argv[i];
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
813
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
814 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
815 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
816 return NGX_ERROR;
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
817 }
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
818
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
819 while (*p) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
820
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
821 switch (*p++) {
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
822
2735
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
823 case '?':
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
824 case 'h':
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
825 ngx_show_version = 1;
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
826 ngx_show_help = 1;
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
827 break;
a9d7f8ebdbef add -? and -h options
Igor Sysoev <igor@sysoev.ru>
parents: 2733
diff changeset
828
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
829 case 'v':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
830 ngx_show_version = 1;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
831 break;
639
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
832
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
833 case 'V':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
834 ngx_show_version = 1;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
835 ngx_show_configure = 1;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
836 break;
945
3a126fca07fc the -V switch
Igor Sysoev <igor@sysoev.ru>
parents: 930
diff changeset
837
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
838 case 't':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
839 ngx_test_config = 1;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
840 break;
317
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
841
6187
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
842 case 'T':
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
843 ngx_test_config = 1;
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
844 ngx_dump_config = 1;
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
845 break;
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6127
diff changeset
846
3750
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
847 case 'q':
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
848 ngx_quiet_mode = 1;
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
849 break;
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
850
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
851 case 'p':
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
852 if (*p) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
853 ngx_prefix = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
854 goto next;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
855 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
856
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
857 if (argv[++i]) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
858 ngx_prefix = (u_char *) argv[i];
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
859 goto next;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
860 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
861
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
862 ngx_log_stderr(0, "option \"-p\" requires directory name");
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
863 return NGX_ERROR;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
864
7744
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
865 case 'e':
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
866 if (*p) {
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
867 ngx_error_log = p;
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
868
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
869 } else if (argv[++i]) {
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
870 ngx_error_log = (u_char *) argv[i];
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
871
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
872 } else {
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
873 ngx_log_stderr(0, "option \"-e\" requires file name");
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
874 return NGX_ERROR;
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
875 }
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 if (ngx_strcmp(ngx_error_log, "stderr") == 0) {
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
878 ngx_error_log = (u_char *) "";
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
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
881 goto next;
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
882
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
883 case 'c':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
884 if (*p) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
885 ngx_conf_file = p;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
886 goto next;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
887 }
316
a0beefedaf94 nginx-0.0.3-2004-04-15-00:34:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
888
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
889 if (argv[++i]) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
890 ngx_conf_file = (u_char *) argv[i];
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
891 goto next;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
892 }
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
893
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
894 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
895 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
896
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
897 case 'g':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
898 if (*p) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
899 ngx_conf_params = p;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
900 goto next;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
901 }
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
902
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
903 if (argv[++i]) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
904 ngx_conf_params = (u_char *) argv[i];
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
905 goto next;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
906 }
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
907
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
908 ngx_log_stderr(0, "option \"-g\" requires parameter");
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
909 return NGX_ERROR;
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 case 's':
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
912 if (*p) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
913 ngx_signal = (char *) p;
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 } else if (argv[++i]) {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
916 ngx_signal = argv[i];
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
917
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
918 } else {
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
919 ngx_log_stderr(0, "option \"-s\" requires parameter");
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
920 return NGX_ERROR;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
921 }
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 if (ngx_strcmp(ngx_signal, "stop") == 0
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
924 || ngx_strcmp(ngx_signal, "quit") == 0
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
925 || ngx_strcmp(ngx_signal, "reopen") == 0
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
926 || ngx_strcmp(ngx_signal, "reload") == 0)
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
927 {
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
928 ngx_process = NGX_PROCESS_SIGNALLER;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
929 goto next;
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
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
932 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
933 return NGX_ERROR;
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
934
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
935 default:
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
936 ngx_log_stderr(0, "invalid option: \"%c\"", *(p - 1));
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
937 return NGX_ERROR;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
938 }
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
939 }
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
940
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
941 next:
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
942
2733
edc01cc34b3e allow condensed command lines options
Igor Sysoev <igor@sysoev.ru>
parents: 2730
diff changeset
943 continue;
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
944 }
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
945
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
946 return NGX_OK;
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
947 }
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
948
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
949
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
950 static ngx_int_t
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
951 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
952 {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
953 #if (NGX_FREEBSD)
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
954
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
955 ngx_os_argv = (char **) argv;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
956 ngx_argc = argc;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
957 ngx_argv = (char **) argv;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
958
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
959 #else
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
960 size_t len;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
961 ngx_int_t i;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
962
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
963 ngx_os_argv = (char **) argv;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
964 ngx_argc = argc;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
965
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
966 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
967 if (ngx_argv == NULL) {
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
968 return NGX_ERROR;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
969 }
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 for (i = 0; i < argc; i++) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
972 len = ngx_strlen(argv[i]) + 1;
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[i] = ngx_alloc(len, cycle->log);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
975 if (ngx_argv[i] == 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
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
979 (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
980 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
981
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
982 ngx_argv[i] = NULL;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
983
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
984 #endif
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
985
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
986 ngx_os_environ = environ;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
987
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
988 return NGX_OK;
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
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
991
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
992 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
993 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
994 {
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
995 u_char *p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
996 size_t len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
997
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
998 if (ngx_prefix) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
999 len = ngx_strlen(ngx_prefix);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1000 p = ngx_prefix;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1001
4783
2220ce29b9d3 Fixed the -p parameter handling.
Ruslan Ermilov <ru@nginx.com>
parents: 4593
diff changeset
1002 if (len && !ngx_path_separator(p[len - 1])) {
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1003 p = ngx_pnalloc(cycle->pool, len + 1);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1004 if (p == NULL) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1005 return NGX_ERROR;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1006 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1007
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1008 ngx_memcpy(p, ngx_prefix, len);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1009 p[len++] = '/';
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1010 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1011
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1012 cycle->conf_prefix.len = len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1013 cycle->conf_prefix.data = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1014 cycle->prefix.len = len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1015 cycle->prefix.data = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1016
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1017 } else {
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 #ifndef NGX_PREFIX
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1020
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1021 p = ngx_pnalloc(cycle->pool, NGX_MAX_PATH);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1022 if (p == NULL) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1023 return NGX_ERROR;
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
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1026 if (ngx_getcwd(p, NGX_MAX_PATH) == 0) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1027 ngx_log_stderr(ngx_errno, "[emerg]: " ngx_getcwd_n " failed");
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1028 return NGX_ERROR;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1029 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1030
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1031 len = ngx_strlen(p);
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 p[len++] = '/';
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1034
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1035 cycle->conf_prefix.len = len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1036 cycle->conf_prefix.data = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1037 cycle->prefix.len = len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1038 cycle->prefix.data = p;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1039
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1040 #else
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1041
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1042 #ifdef NGX_CONF_PREFIX
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
1043 ngx_str_set(&cycle->conf_prefix, NGX_CONF_PREFIX);
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1044 #else
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
1045 ngx_str_set(&cycle->conf_prefix, NGX_PREFIX);
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1046 #endif
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
1047 ngx_str_set(&cycle->prefix, NGX_PREFIX);
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1048
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1049 #endif
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1050 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1051
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
1052 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
1053 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
1054 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
1055
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
1056 } else {
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
1057 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
1058 }
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
1059
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5317
diff changeset
1060 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
1061 return NGX_ERROR;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1062 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1063
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1064 for (p = cycle->conf_file.data + cycle->conf_file.len - 1;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1065 p > cycle->conf_file.data;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1066 p--)
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1067 {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1068 if (ngx_path_separator(*p)) {
7248
fdd6a070d518 Improved code readability (closes #1512).
Ruslan Ermilov <ru@nginx.com>
parents: 7162
diff changeset
1069 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
1070 cycle->conf_prefix.data = cycle->conf_file.data;
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1071 break;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1072 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1073 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1074
7744
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
1075 if (ngx_error_log) {
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
1076 cycle->error_log.len = ngx_strlen(ngx_error_log);
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
1077 cycle->error_log.data = ngx_error_log;
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
1078
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
1079 } else {
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
1080 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
1081 }
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7662
diff changeset
1082
2730
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
1083 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
1084 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
1085 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
1086 }
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
1087
95a17423afdb test command line options before ngx_log_init() and issue errors to stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
1088 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
1089 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
1090 }
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1091
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2755
diff changeset
1092 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
1093 }
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
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1096 static void *
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1097 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
1098 {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
1099 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
1100
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1101 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
1102 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
1103 return NULL;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
1104 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1105
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1106 /*
3480
f4957081d935 fix comments
Igor Sysoev <igor@sysoev.ru>
parents: 3388
diff changeset
1107 * 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
1108 *
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1109 * ccf->pid = NULL;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
1110 * ccf->oldpid = NULL;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1111 * ccf->priority = 0;
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1112 * ccf->cpu_affinity_auto = 0;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1113 * ccf->cpu_affinity_n = 0;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1114 * 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
1115 */
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
1116
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1117 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
1118 ccf->master = NGX_CONF_UNSET;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
1119 ccf->timer_resolution = NGX_CONF_UNSET_MSEC;
6930
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6822
diff changeset
1120 ccf->shutdown_timeout = NGX_CONF_UNSET_MSEC;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
1121
300
502b03d9d2a3 nginx-0.0.3-2004-03-31-00:31:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1122 ccf->worker_processes = NGX_CONF_UNSET;
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1123 ccf->debug_points = NGX_CONF_UNSET;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
1124
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
1125 ccf->rlimit_nofile = NGX_CONF_UNSET;
3762
89002ac695e5 worker_rlimit_core should be off_t
Igor Sysoev <igor@sysoev.ru>
parents: 3750
diff changeset
1126 ccf->rlimit_core = NGX_CONF_UNSET;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
1127
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1128 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
1129 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
1130
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1131 if (ngx_array_init(&ccf->env, cycle->pool, 1, sizeof(ngx_str_t))
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1132 != NGX_OK)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1133 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1134 return NULL;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1135 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1136
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1137 return ccf;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1138 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1139
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1140
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1141 static char *
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1142 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
1143 {
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1144 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
1145
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1146 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
1147 ngx_conf_init_value(ccf->master, 1);
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
1148 ngx_conf_init_msec_value(ccf->timer_resolution, 0);
6930
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6822
diff changeset
1149 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
1150
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1151 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
1152 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
1153
4549
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
1154 #if (NGX_HAVE_CPU_AFFINITY)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1155
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1156 if (!ccf->cpu_affinity_auto
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1157 && ccf->cpu_affinity_n
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1158 && ccf->cpu_affinity_n != 1
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1159 && 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
1160 {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1161 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
1162 "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
1163 "the number of \"worker_cpu_affinity\" masks, "
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1164 "using last mask for remaining worker processes");
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1165 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1166
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1167 #endif
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1168
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1169
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1170 if (ccf->pid.len == 0) {
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
1171 ngx_str_set(&ccf->pid, NGX_PID_PATH);
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1172 }
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1173
9268
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 9134
diff changeset
1174 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
1175 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
1176 ngx_str_set(&ccf->oldpid, "");
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1177
9268
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 9134
diff changeset
1178 } else {
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 9134
diff changeset
1179 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
1180 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
1181 }
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1182
9268
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 9134
diff changeset
1183 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
1184
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 9134
diff changeset
1185 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
1186 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
1187 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
1188 }
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 9134
diff changeset
1189
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 9134
diff changeset
1190 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
1191 NGX_OLDPID_EXT, sizeof(NGX_OLDPID_EXT));
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1192 }
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1193
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1194
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1195 #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
1196
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1197 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
1198 struct group *grp;
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1199 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
1200
1288
eb232400e829 reset errno
Igor Sysoev <igor@sysoev.ru>
parents: 1080
diff changeset
1201 ngx_set_errno(0);
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1202 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
1203 if (pwd == NULL) {
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1204 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
1205 "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
1206 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
1207 }
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1208
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1209 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
1210 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
1211
1288
eb232400e829 reset errno
Igor Sysoev <igor@sysoev.ru>
parents: 1080
diff changeset
1212 ngx_set_errno(0);
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1213 grp = getgrnam(NGX_GROUP);
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1214 if (grp == NULL) {
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1215 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
1216 "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
1217 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
1218 }
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1219
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1220 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
1221 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 217
diff changeset
1222
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1223
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1224 if (ccf->lock_file.len == 0) {
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3480
diff changeset
1225 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
1226 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1227
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5317
diff changeset
1228 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
1229 return NGX_CONF_ERROR;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1230 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
1231
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1232 {
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1233 ngx_str_t lock_file;
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1234
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1235 lock_file = cycle->old_cycle->lock_file;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1236
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1237 if (lock_file.len) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1238 lock_file.len--;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1239
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1240 if (ccf->lock_file.len != lock_file.len
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1241 || 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
1242 != 0)
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1243 {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1244 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1245 "\"lock_file\" could not be changed, ignored");
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1246 }
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 cycle->lock_file.len = lock_file.len + 1;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1249 lock_file.len += sizeof(".accept");
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1250
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1251 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
1252 if (cycle->lock_file.data == NULL) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1253 return NGX_CONF_ERROR;
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 } else {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1257 cycle->lock_file.len = ccf->lock_file.len + 1;
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1258 cycle->lock_file.data = ngx_pnalloc(cycle->pool,
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1259 ccf->lock_file.len + sizeof(".accept"));
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 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
1265 ccf->lock_file.len),
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1266 ".accept", sizeof(".accept"));
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1267 }
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1694
diff changeset
1268 }
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 796
diff changeset
1269
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1270 #endif
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1271
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1272 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
1273 }
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1274
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1275
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1276 static char *
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1277 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
1278 {
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1279 #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
1280
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1281 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
1282 "\"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
1283
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1284 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
1285
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1286 #else
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1287
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1288 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
1289
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1290 char *group;
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1291 struct passwd *pwd;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1292 struct group *grp;
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1293 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
1294
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1295 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
1296 return "is duplicate";
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1297 }
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1298
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1299 if (geteuid() != 0) {
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1300 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
1301 "the \"user\" directive makes sense only "
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1302 "if the master process runs "
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1303 "with super-user privileges, ignored");
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1304 return NGX_CONF_OK;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1305 }
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1306
6264
7ac57369036c Style: unneeded casts of cf->args->elts removed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6257
diff changeset
1307 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
1308
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1309 ccf->username = (char *) value[1].data;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1310
1288
eb232400e829 reset errno
Igor Sysoev <igor@sysoev.ru>
parents: 1080
diff changeset
1311 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
1312 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
1313 if (pwd == NULL) {
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1314 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
1315 "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
1316 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
1317 }
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1318
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1319 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
1320
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1321 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
1322
1288
eb232400e829 reset errno
Igor Sysoev <igor@sysoev.ru>
parents: 1080
diff changeset
1323 ngx_set_errno(0);
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
1324 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
1325 if (grp == NULL) {
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1326 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
1327 "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
1328 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
1329 }
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1330
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1331 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
1332
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1333 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
1334
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 270
diff changeset
1335 #endif
234
cd71b95716b4 nginx-0.0.1-2004-01-20-23:40:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 231
diff changeset
1336 }
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1337
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1338
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1339 static char *
1069
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1340 ngx_set_env(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1341 {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1342 ngx_core_conf_t *ccf = conf;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1343
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1344 ngx_str_t *value, *var;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1345 ngx_uint_t i;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1346
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1347 var = ngx_array_push(&ccf->env);
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1348 if (var == NULL) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1349 return NGX_CONF_ERROR;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1350 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1351
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1352 value = cf->args->elts;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1353 *var = value[1];
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1354
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1355 for (i = 0; i < value[1].len; i++) {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1356
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1357 if (value[1].data[i] == '=') {
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1358
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1359 var->len = i;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1360
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1361 return NGX_CONF_OK;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1362 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1363 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1364
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1365 return NGX_CONF_OK;
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1366 }
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1367
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1368
Igor Sysoev <igor@sysoev.ru>
parents: 949
diff changeset
1369 static char *
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
1370 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
1371 {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1372 ngx_core_conf_t *ccf = conf;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1373
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1374 ngx_str_t *value;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1375 ngx_uint_t n, minus;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1376
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1377 if (ccf->priority != 0) {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1378 return "is duplicate";
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
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1381 value = cf->args->elts;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1382
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1383 if (value[1].data[0] == '-') {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1384 n = 1;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1385 minus = 1;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1386
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1387 } else if (value[1].data[0] == '+') {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1388 n = 1;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1389 minus = 0;
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 } else {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1392 n = 0;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1393 minus = 0;
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
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1396 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
1397 if (ccf->priority == NGX_ERROR) {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1398 return "invalid number";
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1399 }
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1400
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1401 if (minus) {
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1402 ccf->priority = -ccf->priority;
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
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1405 return NGX_CONF_OK;
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
1406 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1407
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1408
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1409 static char *
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1410 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
1411 {
4549
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
1412 #if (NGX_HAVE_CPU_AFFINITY)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1413 ngx_core_conf_t *ccf = conf;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1414
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1415 u_char ch, *p;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1416 ngx_str_t *value;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1417 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
1418 ngx_cpuset_t *mask;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1419
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1420 if (ccf->cpu_affinity) {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1421 return "is duplicate";
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1422 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1423
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1424 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
1425 if (mask == NULL) {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1426 return NGX_CONF_ERROR;
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
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1429 ccf->cpu_affinity_n = cf->args->nelts - 1;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1430 ccf->cpu_affinity = mask;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1431
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1432 value = cf->args->elts;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1433
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1434 if (ngx_strcmp(value[1].data, "auto") == 0) {
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1435
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1436 if (cf->args->nelts > 3) {
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1437 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1438 "invalid number of arguments in "
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1439 "\"worker_cpu_affinity\" directive");
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1440 return NGX_CONF_ERROR;
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1441 }
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1442
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1443 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
1444
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1445 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
1446 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
1447 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
1448 }
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1449
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1450 n = 2;
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1451
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1452 } else {
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1453 n = 1;
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1454 }
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1455
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1456 for ( /* void */ ; n < cf->args->nelts; n++) {
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1457
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1458 if (value[n].len > CPU_SETSIZE) {
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1459 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
1460 "\"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
1461 CPU_SETSIZE);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1462 return NGX_CONF_ERROR;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1463 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1464
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1465 i = 0;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1466 CPU_ZERO(&mask[n - 1]);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1467
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1468 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
1469 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
1470 p--)
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1471 {
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1472 ch = *p;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1473
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1474 if (ch == ' ') {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1475 continue;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1476 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1477
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1478 i++;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1479
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1480 if (ch == '0') {
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1481 continue;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1482 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1483
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1484 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
1485 CPU_SET(i - 1, &mask[n - 1]);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1486 continue;
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
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1489 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
1490 "invalid character \"%c\" in \"worker_cpu_affinity\"",
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1491 ch);
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
1492 return NGX_CONF_ERROR;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1493 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1494 }
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 #else
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1497
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1498 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
1499 "\"worker_cpu_affinity\" is not supported "
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1500 "on this platform, ignored");
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1501 #endif
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 return NGX_CONF_OK;
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1504 }
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
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1507 ngx_cpuset_t *
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1508 ngx_get_cpu_affinity(ngx_uint_t n)
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1509 {
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1510 #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
1511 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
1512 ngx_cpuset_t *mask;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1513 ngx_core_conf_t *ccf;
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 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
1516
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1517 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
1518 ngx_core_module);
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1519
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1520 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
1521 return NULL;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1522 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1523
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1524 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
1525 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
1526
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1527 for (i = 0, j = n; /* void */ ; i++) {
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1528
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1529 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
1530 break;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1531 }
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1532
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1533 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
1534 /* empty mask */
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1535 return NULL;
6335
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1536 }
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1537
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1538 /* void */
96c4297375bc Core: worker_cpu_affinity auto.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6264
diff changeset
1539 }
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 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
1542 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
1543
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1544 return &result;
6335
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
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1547 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
1548 return &ccf->cpu_affinity[n];
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1549 }
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1550
6402
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1551 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
1552
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1553 #else
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1554
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1555 return NULL;
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1556
7296b38f6416 Core: added support for more than 64 CPUs in worker_cpu_affinity.
Vladimir Homutov <vl@nginx.com>
parents: 6399
diff changeset
1557 #endif
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1558 }
4890
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1559
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1560
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1561 static char *
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1562 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
1563 {
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1564 ngx_str_t *value;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1565 ngx_core_conf_t *ccf;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1566
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1567 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
1568
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1569 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
1570 return "is duplicate";
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
6264
7ac57369036c Style: unneeded casts of cf->args->elts removed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6257
diff changeset
1573 value = cf->args->elts;
4890
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 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
1576 ccf->worker_processes = ngx_ncpu;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1577 return NGX_CONF_OK;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1578 }
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 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
1581
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1582 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
1583 return "invalid value";
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1584 }
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1585
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1586 return NGX_CONF_OK;
173cd5458281 Core: the "auto" parameter of the "worker_processes" directive.
Andrey Belov <defan@nginx.com>
parents: 4783
diff changeset
1587 }
6383
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1588
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1589
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1590 static char *
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1591 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
1592 {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1593 #if (NGX_HAVE_DLOPEN)
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1594 void *handle;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1595 char **names, **order;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1596 ngx_str_t *value, file;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1597 ngx_uint_t i;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1598 ngx_module_t *module, **modules;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1599 ngx_pool_cleanup_t *cln;
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 (cf->cycle->modules_used) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1602 return "is specified too late";
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1603 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1604
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1605 value = cf->args->elts;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1606
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1607 file = value[1];
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 (ngx_conf_full_name(cf->cycle, &file, 0) != NGX_OK) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1610 return NGX_CONF_ERROR;
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 cln = ngx_pool_cleanup_add(cf->cycle->pool, 0);
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1614 if (cln == NULL) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1615 return NGX_CONF_ERROR;
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
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1618 handle = ngx_dlopen(file.data);
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1619 if (handle == NULL) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1620 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1621 ngx_dlopen_n " \"%s\" failed (%s)",
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1622 file.data, ngx_dlerror());
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 cln->handler = ngx_unload_module;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1627 cln->data = handle;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1628
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1629 modules = ngx_dlsym(handle, "ngx_modules");
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1630 if (modules == NULL) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1631 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1632 ngx_dlsym_n " \"%V\", \"%s\" failed (%s)",
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1633 &value[1], "ngx_modules", ngx_dlerror());
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1634 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1635 }
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 names = ngx_dlsym(handle, "ngx_module_names");
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1638 if (names == 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_module_names", 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 order = ngx_dlsym(handle, "ngx_module_order");
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1646
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1647 for (i = 0; modules[i]; i++) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1648 module = modules[i];
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1649 module->name = names[i];
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1650
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1651 if (ngx_add_module(cf, &file, module, order) != NGX_OK) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1652 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1653 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1654
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6446
diff changeset
1655 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
1656 module->name, module->index);
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1657 }
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 return NGX_CONF_OK;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1660
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1661 #else
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1662
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1663 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1664 "\"load_module\" is not supported "
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1665 "on this platform");
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1666 return NGX_CONF_ERROR;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1667
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1668 #endif
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1669 }
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
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1672 #if (NGX_HAVE_DLOPEN)
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1673
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1674 static void
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1675 ngx_unload_module(void *data)
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1676 {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1677 void *handle = data;
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 if (ngx_dlclose(handle) != 0) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1680 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0,
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1681 ngx_dlclose_n " failed (%s)", ngx_dlerror());
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1682 }
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1683 }
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 #endif