|
|
@ -1,25 +1,25 @@
|
|
|
|
diff --git a/src/core/nginx.c b/src/core/nginx.c
|
|
|
|
diff --git a/src/core/nginx.c b/src/core/nginx.c
|
|
|
|
index 60f8fe7..4bd244b 100644
|
|
|
|
index 9fcb0eb2..cba4ca55 100644
|
|
|
|
--- a/src/core/nginx.c
|
|
|
|
--- a/src/core/nginx.c
|
|
|
|
+++ b/src/core/nginx.c
|
|
|
|
+++ b/src/core/nginx.c
|
|
|
|
@@ -981,6 +981,7 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle)
|
|
|
|
@@ -1027,6 +1030,7 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle)
|
|
|
|
|
|
|
|
|
|
|
|
ccf->daemon = NGX_CONF_UNSET;
|
|
|
|
ccf->daemon = NGX_CONF_UNSET;
|
|
|
|
ccf->master = NGX_CONF_UNSET;
|
|
|
|
ccf->master = NGX_CONF_UNSET;
|
|
|
|
+ ccf->privileged_agent = NGX_CONF_UNSET;
|
|
|
|
+ ccf->privileged_agent = NGX_CONF_UNSET;
|
|
|
|
ccf->timer_resolution = NGX_CONF_UNSET_MSEC;
|
|
|
|
ccf->timer_resolution = NGX_CONF_UNSET_MSEC;
|
|
|
|
|
|
|
|
ccf->shutdown_timeout = NGX_CONF_UNSET_MSEC;
|
|
|
|
|
|
|
|
|
|
|
|
ccf->worker_processes = NGX_CONF_UNSET;
|
|
|
|
@@ -1056,6 +1060,7 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf)
|
|
|
|
@@ -1009,6 +1010,7 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ngx_conf_init_value(ccf->daemon, 1);
|
|
|
|
ngx_conf_init_value(ccf->daemon, 1);
|
|
|
|
ngx_conf_init_value(ccf->master, 1);
|
|
|
|
ngx_conf_init_value(ccf->master, 1);
|
|
|
|
+ ngx_conf_init_value(ccf->privileged_agent, 0);
|
|
|
|
+ ngx_conf_init_value(ccf->privileged_agent, 0);
|
|
|
|
ngx_conf_init_msec_value(ccf->timer_resolution, 0);
|
|
|
|
ngx_conf_init_msec_value(ccf->timer_resolution, 0);
|
|
|
|
|
|
|
|
ngx_conf_init_msec_value(ccf->shutdown_timeout, 0);
|
|
|
|
|
|
|
|
|
|
|
|
ngx_conf_init_value(ccf->worker_processes, 1);
|
|
|
|
|
|
|
|
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h
|
|
|
|
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h
|
|
|
|
index c51b7ff..3261f90 100644
|
|
|
|
index 54fa2e6b..c3b0181c 100644
|
|
|
|
--- a/src/core/ngx_cycle.h
|
|
|
|
--- a/src/core/ngx_cycle.h
|
|
|
|
+++ b/src/core/ngx_cycle.h
|
|
|
|
+++ b/src/core/ngx_cycle.h
|
|
|
|
@@ -22,6 +22,9 @@
|
|
|
|
@@ -22,6 +22,9 @@
|
|
|
@ -32,16 +32,16 @@ index c51b7ff..3261f90 100644
|
|
|
|
typedef struct ngx_shm_zone_s ngx_shm_zone_t;
|
|
|
|
typedef struct ngx_shm_zone_s ngx_shm_zone_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data);
|
|
|
|
typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data);
|
|
|
|
@@ -81,6 +84,7 @@ struct ngx_cycle_s {
|
|
|
|
@@ -87,6 +90,7 @@ struct ngx_cycle_s {
|
|
|
|
typedef struct {
|
|
|
|
typedef struct {
|
|
|
|
ngx_flag_t daemon;
|
|
|
|
ngx_flag_t daemon;
|
|
|
|
ngx_flag_t master;
|
|
|
|
ngx_flag_t master;
|
|
|
|
+ ngx_flag_t privileged_agent;
|
|
|
|
+ ngx_flag_t privileged_agent;
|
|
|
|
|
|
|
|
|
|
|
|
ngx_msec_t timer_resolution;
|
|
|
|
ngx_msec_t timer_resolution;
|
|
|
|
|
|
|
|
ngx_msec_t shutdown_timeout;
|
|
|
|
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
|
|
|
|
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
|
|
|
|
index 7cee1c5..c4f70d6 100644
|
|
|
|
index 5817a2c2..4cd00e9b 100644
|
|
|
|
--- a/src/os/unix/ngx_process_cycle.c
|
|
|
|
--- a/src/os/unix/ngx_process_cycle.c
|
|
|
|
+++ b/src/os/unix/ngx_process_cycle.c
|
|
|
|
+++ b/src/os/unix/ngx_process_cycle.c
|
|
|
|
@@ -15,6 +15,8 @@ static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n,
|
|
|
|
@@ -15,6 +15,8 @@ static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n,
|
|
|
@ -61,7 +61,7 @@ index 7cee1c5..c4f70d6 100644
|
|
|
|
static void ngx_cache_manager_process_handler(ngx_event_t *ev);
|
|
|
|
static void ngx_cache_manager_process_handler(ngx_event_t *ev);
|
|
|
|
static void ngx_cache_loader_process_handler(ngx_event_t *ev);
|
|
|
|
static void ngx_cache_loader_process_handler(ngx_event_t *ev);
|
|
|
|
|
|
|
|
|
|
|
|
@@ -51,6 +54,8 @@ sig_atomic_t ngx_noaccept;
|
|
|
|
@@ -52,6 +55,8 @@ sig_atomic_t ngx_noaccept;
|
|
|
|
ngx_uint_t ngx_noaccepting;
|
|
|
|
ngx_uint_t ngx_noaccepting;
|
|
|
|
ngx_uint_t ngx_restart;
|
|
|
|
ngx_uint_t ngx_restart;
|
|
|
|
|
|
|
|
|
|
|
@ -70,7 +70,7 @@ index 7cee1c5..c4f70d6 100644
|
|
|
|
|
|
|
|
|
|
|
|
static u_char master_process[] = "master process";
|
|
|
|
static u_char master_process[] = "master process";
|
|
|
|
|
|
|
|
|
|
|
|
@@ -130,6 +135,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
|
|
|
@@ -131,6 +136,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
|
|
|
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
|
|
|
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
|
|
|
NGX_PROCESS_RESPAWN);
|
|
|
|
NGX_PROCESS_RESPAWN);
|
|
|
|
ngx_start_cache_manager_processes(cycle, 0);
|
|
|
|
ngx_start_cache_manager_processes(cycle, 0);
|
|
|
@ -78,7 +78,7 @@ index 7cee1c5..c4f70d6 100644
|
|
|
|
|
|
|
|
|
|
|
|
ngx_new_binary = 0;
|
|
|
|
ngx_new_binary = 0;
|
|
|
|
delay = 0;
|
|
|
|
delay = 0;
|
|
|
|
@@ -224,6 +230,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
|
|
|
@@ -225,6 +231,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
|
|
|
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
|
|
|
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
|
|
|
NGX_PROCESS_RESPAWN);
|
|
|
|
NGX_PROCESS_RESPAWN);
|
|
|
|
ngx_start_cache_manager_processes(cycle, 0);
|
|
|
|
ngx_start_cache_manager_processes(cycle, 0);
|
|
|
@ -86,7 +86,7 @@ index 7cee1c5..c4f70d6 100644
|
|
|
|
ngx_noaccepting = 0;
|
|
|
|
ngx_noaccepting = 0;
|
|
|
|
|
|
|
|
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
@@ -243,6 +250,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
|
|
|
@@ -244,6 +251,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
|
|
|
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
|
|
|
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
|
|
|
NGX_PROCESS_JUST_RESPAWN);
|
|
|
|
NGX_PROCESS_JUST_RESPAWN);
|
|
|
|
ngx_start_cache_manager_processes(cycle, 1);
|
|
|
|
ngx_start_cache_manager_processes(cycle, 1);
|
|
|
@ -94,7 +94,7 @@ index 7cee1c5..c4f70d6 100644
|
|
|
|
|
|
|
|
|
|
|
|
/* allow new processes to start */
|
|
|
|
/* allow new processes to start */
|
|
|
|
ngx_msleep(100);
|
|
|
|
ngx_msleep(100);
|
|
|
|
@@ -257,6 +265,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
|
|
|
@@ -258,6 +266,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
|
|
|
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
|
|
|
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
|
|
|
NGX_PROCESS_RESPAWN);
|
|
|
|
NGX_PROCESS_RESPAWN);
|
|
|
|
ngx_start_cache_manager_processes(cycle, 0);
|
|
|
|
ngx_start_cache_manager_processes(cycle, 0);
|
|
|
@ -137,7 +137,7 @@ index 7cee1c5..c4f70d6 100644
|
|
|
|
ngx_pass_open_channel(ngx_cycle_t *cycle, ngx_channel_t *ch)
|
|
|
|
ngx_pass_open_channel(ngx_cycle_t *cycle, ngx_channel_t *ch)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ngx_int_t i;
|
|
|
|
ngx_int_t i;
|
|
|
|
@@ -827,7 +864,10 @@ ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker)
|
|
|
|
@@ -825,7 +867,10 @@ ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -149,10 +149,11 @@ index 7cee1c5..c4f70d6 100644
|
|
|
|
if (setgid(ccf->group) == -1) {
|
|
|
|
if (setgid(ccf->group) == -1) {
|
|
|
|
ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
|
|
|
|
ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
|
|
|
|
"setgid(%d) failed", ccf->group);
|
|
|
|
"setgid(%d) failed", ccf->group);
|
|
|
|
@@ -1144,6 +1184,47 @@ ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data)
|
|
|
|
@@ -1174,6 +1219,47 @@ ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
+static void
|
|
|
|
+ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data)
|
|
|
|
+ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data)
|
|
|
|
+{
|
|
|
|
+{
|
|
|
|
+ char *name = data;
|
|
|
|
+ char *name = data;
|
|
|
@ -193,12 +194,11 @@ index 7cee1c5..c4f70d6 100644
|
|
|
|
+}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+static void
|
|
|
|
static void
|
|
|
|
ngx_cache_manager_process_handler(ngx_event_t *ev)
|
|
|
|
ngx_cache_manager_process_handler(ngx_event_t *ev)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
time_t next, n;
|
|
|
|
|
|
|
|
diff --git a/src/os/unix/ngx_process_cycle.h b/src/os/unix/ngx_process_cycle.h
|
|
|
|
diff --git a/src/os/unix/ngx_process_cycle.h b/src/os/unix/ngx_process_cycle.h
|
|
|
|
index 69495d5..5149396 100644
|
|
|
|
index 69495d5f..51493962 100644
|
|
|
|
--- a/src/os/unix/ngx_process_cycle.h
|
|
|
|
--- a/src/os/unix/ngx_process_cycle.h
|
|
|
|
+++ b/src/os/unix/ngx_process_cycle.h
|
|
|
|
+++ b/src/os/unix/ngx_process_cycle.h
|
|
|
|
@@ -45,6 +45,7 @@ extern ngx_pid_t ngx_new_binary;
|
|
|
|
@@ -45,6 +45,7 @@ extern ngx_pid_t ngx_new_binary;
|
|
|
|