summaryrefslogtreecommitdiffhomepage
path: root/src/os/win32/ngx_process_cycle.c
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2014-03-31 21:38:28 +0400
committerMaxim Dounin <mdounin@mdounin.ru>2014-03-31 21:38:28 +0400
commit8f6958baa97b43d16185364dcfb7d68361012740 (patch)
treee0c9908c4b12f4f23eb9975be51acb7d0b3cded6 /src/os/win32/ngx_process_cycle.c
parente042fc903883341806366b39a526711b77f5c34b (diff)
downloadnginx-8f6958baa97b43d16185364dcfb7d68361012740.tar.gz
nginx-8f6958baa97b43d16185364dcfb7d68361012740.tar.bz2
Win32: fixed cpu hog by cache manager on exit (ticket #514).
The "ngx_quit" may be reset by the worker thread before it's seen by a ngx_cache_manager_thread(), resulting in an infinite loop. Make sure to test ngx_exiting as well.
Diffstat (limited to 'src/os/win32/ngx_process_cycle.c')
-rw-r--r--src/os/win32/ngx_process_cycle.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/os/win32/ngx_process_cycle.c b/src/os/win32/ngx_process_cycle.c
index be8d9ac65..183efc896 100644
--- a/src/os/win32/ngx_process_cycle.c
+++ b/src/os/win32/ngx_process_cycle.c
@@ -926,7 +926,7 @@ ngx_cache_manager_thread(void *data)
* ev == WAIT_ABANDONED_0 + 1
*/
- if (ngx_terminate || ngx_quit) {
+ if (ngx_terminate || ngx_quit || ngx_exiting) {
ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
return 0;
}
@@ -936,7 +936,7 @@ ngx_cache_manager_thread(void *data)
for ( ;; ) {
- if (ngx_terminate || ngx_quit) {
+ if (ngx_terminate || ngx_quit || ngx_exiting) {
ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
break;
}
@@ -1005,7 +1005,7 @@ ngx_cache_loader_thread(void *data)
path = cycle->paths.elts;
for (i = 0; i < cycle->paths.nelts; i++) {
- if (ngx_terminate || ngx_quit) {
+ if (ngx_terminate || ngx_quit || ngx_exiting) {
break;
}