summaryrefslogtreecommitdiffhomepage
path: root/src/os/win32
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@nginx.com>2017-11-28 12:00:24 +0300
committerRuslan Ermilov <ru@nginx.com>2017-11-28 12:00:24 +0300
commitafad21917584e9b452ba33ce3485edde5615b859 (patch)
tree883222e33a8203c4023017f7536b040c48a881cb /src/os/win32
parent7a7fc708fb7f6739dc6652ee1f14da1f9e24650d (diff)
downloadnginx-afad21917584e9b452ba33ce3485edde5615b859.tar.gz
nginx-afad21917584e9b452ba33ce3485edde5615b859.tar.bz2
Fixed "changing binary" when reaper is not init.
On some systems, it's possible that reaper of orphaned processes is set to something other than "init" process. On such systems, the changing binary procedure did not work. The fix is to check if PPID has changed, instead of assuming it's always 1 for orphaned processes.
Diffstat (limited to 'src/os/win32')
-rw-r--r--src/os/win32/ngx_process.h2
-rw-r--r--src/os/win32/ngx_process_cycle.c1
2 files changed, 3 insertions, 0 deletions
diff --git a/src/os/win32/ngx_process.h b/src/os/win32/ngx_process.h
index a6a5aa29f..7ec4cd92c 100644
--- a/src/os/win32/ngx_process.h
+++ b/src/os/win32/ngx_process.h
@@ -14,6 +14,7 @@ typedef DWORD ngx_pid_t;
#define ngx_getpid GetCurrentProcessId
+#define ngx_getppid() 0
#define ngx_log_pid ngx_pid
@@ -73,6 +74,7 @@ extern ngx_int_t ngx_last_process;
extern ngx_process_t ngx_processes[NGX_MAX_PROCESSES];
extern ngx_pid_t ngx_pid;
+extern ngx_pid_t ngx_parent;
#endif /* _NGX_PROCESS_H_INCLUDED_ */
diff --git a/src/os/win32/ngx_process_cycle.c b/src/os/win32/ngx_process_cycle.c
index 293b967ec..3aea874e0 100644
--- a/src/os/win32/ngx_process_cycle.c
+++ b/src/os/win32/ngx_process_cycle.c
@@ -31,6 +31,7 @@ static ngx_thread_value_t __stdcall ngx_cache_loader_thread(void *data);
ngx_uint_t ngx_process;
ngx_uint_t ngx_worker;
ngx_pid_t ngx_pid;
+ngx_pid_t ngx_parent;
ngx_uint_t ngx_inherited;
ngx_pid_t ngx_new_binary;