diff options
| author | Maxim Dounin <mdounin@mdounin.ru> | 2014-03-31 21:38:28 +0400 |
|---|---|---|
| committer | Maxim Dounin <mdounin@mdounin.ru> | 2014-03-31 21:38:28 +0400 |
| commit | 8f6958baa97b43d16185364dcfb7d68361012740 (patch) | |
| tree | e0c9908c4b12f4f23eb9975be51acb7d0b3cded6 /src/os/win32/ngx_process_cycle.c | |
| parent | e042fc903883341806366b39a526711b77f5c34b (diff) | |
| download | nginx-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.c | 6 |
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; } |
