comparison src/os/unix/ngx_process_cycle.c @ 26:45fe5b98a9de NGINX_0_1_13

nginx 0.1.13 *) Feature: the server_names_hash and server_names_hash_threshold directives. *) Bugfix: the *.domain.tld names in the "server_name" directive did not work. *) Bugfix: the %request_length log parameter logged the incorrect length.
author Igor Sysoev <http://sysoev.ru>
date Tue, 21 Dec 2004 00:00:00 +0300
parents 8b6db3bda591
children 7ca9bdc82b3f
comparison
equal deleted inserted replaced
25:21488c53e135 26:45fe5b98a9de
33 sig_atomic_t ngx_reap; 33 sig_atomic_t ngx_reap;
34 sig_atomic_t ngx_timer; 34 sig_atomic_t ngx_timer;
35 sig_atomic_t ngx_sigio; 35 sig_atomic_t ngx_sigio;
36 sig_atomic_t ngx_terminate; 36 sig_atomic_t ngx_terminate;
37 sig_atomic_t ngx_quit; 37 sig_atomic_t ngx_quit;
38 sig_atomic_t ngx_debug_quit;
38 ngx_uint_t ngx_exiting; 39 ngx_uint_t ngx_exiting;
39 sig_atomic_t ngx_reconfigure; 40 sig_atomic_t ngx_reconfigure;
40 sig_atomic_t ngx_reopen; 41 sig_atomic_t ngx_reopen;
41 42
42 sig_atomic_t ngx_change_binary; 43 sig_atomic_t ngx_change_binary;
192 193
193 if (ngx_reconfigure) { 194 if (ngx_reconfigure) {
194 ngx_reconfigure = 0; 195 ngx_reconfigure = 0;
195 196
196 if (ngx_new_binary) { 197 if (ngx_new_binary) {
197 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "start new workers");
198
199 ngx_start_worker_processes(cycle, ccf->worker_processes, 198 ngx_start_worker_processes(cycle, ccf->worker_processes,
200 NGX_PROCESS_RESPAWN); 199 NGX_PROCESS_RESPAWN);
201 ngx_start_garbage_collector(cycle, NGX_PROCESS_RESPAWN); 200 ngx_start_garbage_collector(cycle, NGX_PROCESS_RESPAWN);
202 ngx_noaccepting = 0; 201 ngx_noaccepting = 0;
203 202
204 continue; 203 continue;
205 } 204 }
206 205
207 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "reconfiguring"); 206 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reconfiguring");
208 207
209 cycle = ngx_init_cycle(cycle); 208 cycle = ngx_init_cycle(cycle);
210 if (cycle == NULL) { 209 if (cycle == NULL) {
211 cycle = (ngx_cycle_t *) ngx_cycle; 210 cycle = (ngx_cycle_t *) ngx_cycle;
212 continue; 211 continue;
231 live = 1; 230 live = 1;
232 } 231 }
233 232
234 if (ngx_reopen) { 233 if (ngx_reopen) {
235 ngx_reopen = 0; 234 ngx_reopen = 0;
236 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "reopening logs"); 235 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reopening logs");
237 ngx_reopen_files(cycle, ccf->user); 236 ngx_reopen_files(cycle, ccf->user);
238 ngx_signal_worker_processes(cycle, 237 ngx_signal_worker_processes(cycle,
239 ngx_signal_value(NGX_REOPEN_SIGNAL)); 238 ngx_signal_value(NGX_REOPEN_SIGNAL));
240 } 239 }
241 240
242 if (ngx_change_binary) { 241 if (ngx_change_binary) {
243 ngx_change_binary = 0; 242 ngx_change_binary = 0;
244 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "changing binary"); 243 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "changing binary");
245 ngx_new_binary = ngx_exec_new_binary(cycle, ngx_argv); 244 ngx_new_binary = ngx_exec_new_binary(cycle, ngx_argv);
246 } 245 }
247 246
248 if (ngx_noaccept) { 247 if (ngx_noaccept) {
249 ngx_noaccept = 0; 248 ngx_noaccept = 0;
279 ngx_master_exit(cycle); 278 ngx_master_exit(cycle);
280 } 279 }
281 280
282 if (ngx_reconfigure) { 281 if (ngx_reconfigure) {
283 ngx_reconfigure = 0; 282 ngx_reconfigure = 0;
284 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "reconfiguring"); 283 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reconfiguring");
285 284
286 cycle = ngx_init_cycle(cycle); 285 cycle = ngx_init_cycle(cycle);
287 if (cycle == NULL) { 286 if (cycle == NULL) {
288 cycle = (ngx_cycle_t *) ngx_cycle; 287 cycle = (ngx_cycle_t *) ngx_cycle;
289 continue; 288 continue;
292 ngx_cycle = cycle; 291 ngx_cycle = cycle;
293 } 292 }
294 293
295 if (ngx_reopen) { 294 if (ngx_reopen) {
296 ngx_reopen = 0; 295 ngx_reopen = 0;
297 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "reopening logs"); 296 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reopening logs");
298 ngx_reopen_files(cycle, (ngx_uid_t) -1); 297 ngx_reopen_files(cycle, (ngx_uid_t) -1);
299 } 298 }
300 } 299 }
301 } 300 }
302 301
306 { 305 {
307 ngx_int_t i; 306 ngx_int_t i;
308 ngx_channel_t ch; 307 ngx_channel_t ch;
309 struct itimerval itv; 308 struct itimerval itv;
310 309
311 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "start worker processes"); 310 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "start worker processes");
312 311
313 ch.command = NGX_CMD_OPEN_CHANNEL; 312 ch.command = NGX_CMD_OPEN_CHANNEL;
314 313
315 while (n--) { 314 while (n--) {
316 ngx_spawn_process(cycle, ngx_worker_process_cycle, NULL, 315 ngx_spawn_process(cycle, ngx_worker_process_cycle, NULL,
365 ngx_int_t i; 364 ngx_int_t i;
366 ngx_channel_t ch; 365 ngx_channel_t ch;
367 366
368 return; 367 return;
369 368
370 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "start garbage collector"); 369 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "start garbage collector");
371 370
372 ch.command = NGX_CMD_OPEN_CHANNEL; 371 ch.command = NGX_CMD_OPEN_CHANNEL;
373 372
374 ngx_spawn_process(cycle, ngx_garbage_collector_cycle, NULL, 373 ngx_spawn_process(cycle, ngx_garbage_collector_cycle, NULL,
375 "garbage collector", type); 374 "garbage collector", type);
622 621
623 static void ngx_master_exit(ngx_cycle_t *cycle) 622 static void ngx_master_exit(ngx_cycle_t *cycle)
624 { 623 {
625 ngx_delete_pidfile(cycle); 624 ngx_delete_pidfile(cycle);
626 625
627 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exit"); 626 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exit");
628 627
629 ngx_destroy_pool(cycle->pool); 628 ngx_destroy_pool(cycle->pool);
630 629
631 exit(0); 630 exit(0);
632 } 631 }
688 687
689 for ( ;; ) { 688 for ( ;; ) {
690 if (ngx_exiting 689 if (ngx_exiting
691 && ngx_event_timer_rbtree == &ngx_event_timer_sentinel) 690 && ngx_event_timer_rbtree == &ngx_event_timer_sentinel)
692 { 691 {
693 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exiting"); 692 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
694 693
695 694
696 #if (NGX_THREADS) 695 #if (NGX_THREADS)
697 ngx_terminate = 1; 696 ngx_terminate = 1;
698 697
699 ngx_wakeup_worker_threads(cycle); 698 ngx_wakeup_worker_threads(cycle);
700 #endif 699 #endif
700
701 if (ngx_debug_quit) {
702 ngx_debug_point();
703 }
701 704
702 /* 705 /*
703 * we do not destroy cycle->pool here because a signal handler 706 * we do not destroy cycle->pool here because a signal handler
704 * that uses cycle->log can be called at this point 707 * that uses cycle->log can be called at this point
705 */ 708 */
709 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle"); 712 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
710 713
711 ngx_process_events(cycle); 714 ngx_process_events(cycle);
712 715
713 if (ngx_terminate) { 716 if (ngx_terminate) {
714 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exiting"); 717 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
715 718
716 #if (NGX_THREADS) 719 #if (NGX_THREADS)
717 ngx_wakeup_worker_threads(cycle); 720 ngx_wakeup_worker_threads(cycle);
718 #endif 721 #endif
719 722
724 exit(0); 727 exit(0);
725 } 728 }
726 729
727 if (ngx_quit) { 730 if (ngx_quit) {
728 ngx_quit = 0; 731 ngx_quit = 0;
729 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, 732 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0,
730 "gracefully shutting down"); 733 "gracefully shutting down");
731 ngx_setproctitle("worker process is shutting down"); 734 ngx_setproctitle("worker process is shutting down");
732 735
733 if (!ngx_exiting) { 736 if (!ngx_exiting) {
734 ngx_close_listening_sockets(cycle); 737 ngx_close_listening_sockets(cycle);
736 } 739 }
737 } 740 }
738 741
739 if (ngx_reopen) { 742 if (ngx_reopen) {
740 ngx_reopen = 0; 743 ngx_reopen = 0;
741 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "reopen logs"); 744 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reopening logs");
742 ngx_reopen_files(cycle, -1); 745 ngx_reopen_files(cycle, -1);
743 } 746 }
744 } 747 }
745 } 748 }
746 749
1094 #endif 1097 #endif
1095 1098
1096 for ( ;; ) { 1099 for ( ;; ) {
1097 1100
1098 if (ngx_terminate || ngx_quit) { 1101 if (ngx_terminate || ngx_quit) {
1099 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exiting"); 1102 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
1100 exit(0); 1103 exit(0);
1101 } 1104 }
1102 1105
1103 if (ngx_reopen) { 1106 if (ngx_reopen) {
1104 ngx_reopen = 0; 1107 ngx_reopen = 0;
1105 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "reopen logs"); 1108 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reopening logs");
1106 ngx_reopen_files(cycle, -1); 1109 ngx_reopen_files(cycle, -1);
1107 } 1110 }
1108 1111
1109 path = cycle->pathes.elts; 1112 path = cycle->pathes.elts;
1110 for (i = 0; i < cycle->pathes.nelts; i++) { 1113 for (i = 0; i < cycle->pathes.nelts; i++) {