annotate src/core/nginx.c @ 7690:8253424d1aff

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