comparison src/os/unix/ngx_process_cycle.c @ 340:10cc350ed8a1 NGINX_0_6_14

nginx 0.6.14 *) Change: now by default the "echo" SSI command uses entity encoding. *) Feature: the "encoding" parameter in the "echo" SSI command. *) Feature: the "access_log" directive may be used inside the "limit_except" block. *) Bugfix: if all upstream servers were failed, then all servers had got weight the was equal one until servers became alive; bug appeared in 0.6.6. *) Bugfix: a segmentation fault occurred in worker process if $date_local and $date_gmt were used outside the ngx_http_ssi_filter_module. *) Bugfix: a segmentation fault might occur in worker process if debug log was enabled. Thanks to Andrei Nigmatulin. *) Bugfix: ngx_http_memcached_module did not set $upstream_response_time. Thanks to Maxim Dounin. *) Bugfix: a worker process may got caught in an endless loop, if the memcached was used. *) Bugfix: nginx supported low case only "close" and "keep-alive" values in the "Connection" request header line; bug appeared in 0.6.11. *) Bugfix: sub_filter did not work with empty substitution. *) Bugfix: in sub_filter parsing.
author Igor Sysoev <http://sysoev.ru>
date Mon, 15 Oct 2007 00:00:00 +0400
parents 3a91bfeffaba
children 4276c2f1f434
comparison
equal deleted inserted replaced
339:d19550b67059 340:10cc350ed8a1
12 12
13 static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n, 13 static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n,
14 ngx_int_t type); 14 ngx_int_t type);
15 static void ngx_start_garbage_collector(ngx_cycle_t *cycle, ngx_int_t type); 15 static void ngx_start_garbage_collector(ngx_cycle_t *cycle, ngx_int_t type);
16 static void ngx_signal_worker_processes(ngx_cycle_t *cycle, int signo); 16 static void ngx_signal_worker_processes(ngx_cycle_t *cycle, int signo);
17 static ngx_uint_t ngx_reap_childs(ngx_cycle_t *cycle); 17 static ngx_uint_t ngx_reap_children(ngx_cycle_t *cycle);
18 static void ngx_master_process_exit(ngx_cycle_t *cycle); 18 static void ngx_master_process_exit(ngx_cycle_t *cycle);
19 static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data); 19 static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data);
20 static void ngx_worker_process_init(ngx_cycle_t *cycle, ngx_uint_t priority); 20 static void ngx_worker_process_init(ngx_cycle_t *cycle, ngx_uint_t priority);
21 static void ngx_worker_process_exit(ngx_cycle_t *cycle); 21 static void ngx_worker_process_exit(ngx_cycle_t *cycle);
22 static void ngx_channel_handler(ngx_event_t *ev); 22 static void ngx_channel_handler(ngx_event_t *ev);
155 155
156 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "wake up"); 156 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "wake up");
157 157
158 if (ngx_reap) { 158 if (ngx_reap) {
159 ngx_reap = 0; 159 ngx_reap = 0;
160 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "reap childs"); 160 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "reap children");
161 161
162 live = ngx_reap_childs(cycle); 162 live = ngx_reap_children(cycle);
163 } 163 }
164 164
165 if (!live && (ngx_terminate || ngx_quit)) { 165 if (!live && (ngx_terminate || ngx_quit)) {
166 ngx_master_process_exit(cycle); 166 ngx_master_process_exit(cycle);
167 } 167 }
494 } 494 }
495 } 495 }
496 496
497 497
498 static ngx_uint_t 498 static ngx_uint_t
499 ngx_reap_childs(ngx_cycle_t *cycle) 499 ngx_reap_children(ngx_cycle_t *cycle)
500 { 500 {
501 ngx_int_t i, n; 501 ngx_int_t i, n;
502 ngx_uint_t live; 502 ngx_uint_t live;
503 ngx_channel_t ch; 503 ngx_channel_t ch;
504 ngx_core_conf_t *ccf; 504 ngx_core_conf_t *ccf;