mirror of https://github.com/openresty/openresty
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.9 KiB
C
64 lines
1.9 KiB
C
diff --git a/src/core/nginx.c b/src/core/nginx.c
|
|
index 9fcb0eb2..3b75ce1a 100644
|
|
--- a/src/core/nginx.c
|
|
+++ b/src/core/nginx.c
|
|
@@ -186,6 +186,7 @@ static u_char *ngx_prefix;
|
|
static u_char *ngx_conf_file;
|
|
static u_char *ngx_conf_params;
|
|
static char *ngx_signal;
|
|
+ngx_pool_t *saved_init_cycle_pool = NULL;
|
|
|
|
|
|
static char **ngx_os_environ;
|
|
@@ -254,6 +255,8 @@ main(int argc, char *const *argv)
|
|
return 1;
|
|
}
|
|
|
|
+ saved_init_cycle_pool = init_cycle.pool;
|
|
+
|
|
if (ngx_save_argv(&init_cycle, argc, argv) != NGX_OK) {
|
|
return 1;
|
|
}
|
|
diff --git a/src/core/ngx_core.h b/src/core/ngx_core.h
|
|
index 93ca9174..b56480d9 100644
|
|
--- a/src/core/ngx_core.h
|
|
+++ b/src/core/ngx_core.h
|
|
@@ -109,4 +109,6 @@ void ngx_cpuinfo(void);
|
|
#define NGX_DISABLE_SYMLINKS_NOTOWNER 2
|
|
#endif
|
|
|
|
+extern ngx_pool_t *saved_init_cycle_pool;
|
|
+
|
|
#endif /* _NGX_CORE_H_INCLUDED_ */
|
|
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
|
|
index 95f4bdfa..ce3200f8 100644
|
|
--- a/src/core/ngx_cycle.c
|
|
+++ b/src/core/ngx_cycle.c
|
|
@@ -758,6 +758,10 @@ old_shm_zone_done:
|
|
|
|
if (ngx_process == NGX_PROCESS_MASTER || ngx_is_init_cycle(old_cycle)) {
|
|
|
|
+ if (ngx_is_init_cycle(old_cycle)) {
|
|
+ saved_init_cycle_pool = NULL;
|
|
+ }
|
|
+
|
|
ngx_destroy_pool(old_cycle->pool);
|
|
cycle->old_cycle = NULL;
|
|
|
|
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
|
|
index 5817a2c2..aca73368 100644
|
|
--- a/src/os/unix/ngx_process_cycle.c
|
|
+++ b/src/os/unix/ngx_process_cycle.c
|
|
@@ -718,6 +718,11 @@ ngx_master_process_exit(ngx_cycle_t *cycle)
|
|
ngx_exit_cycle.files_n = ngx_cycle->files_n;
|
|
ngx_cycle = &ngx_exit_cycle;
|
|
|
|
+ if (saved_init_cycle_pool != NULL && saved_init_cycle_pool != cycle->pool) {
|
|
+ ngx_destroy_pool(saved_init_cycle_pool);
|
|
+ saved_init_cycle_pool = NULL;
|
|
+ }
|
|
+
|
|
ngx_destroy_pool(cycle->pool);
|
|
|
|
exit(0);
|