Mercurial > hg > nginx
comparison src/core/nginx.c @ 223:5d168ebc1ecc
nginx-0.0.1-2004-01-09-18:47:42 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 09 Jan 2004 15:47:42 +0000 |
parents | 99df0edb63ed |
children | d427f1c3fe95 |
comparison
equal
deleted
inserted
replaced
222:99df0edb63ed | 223:5d168ebc1ecc |
---|---|
233 ngx_msec_t delay; | 233 ngx_msec_t delay; |
234 struct timeval tv; | 234 struct timeval tv; |
235 ngx_uint_t i, live; | 235 ngx_uint_t i, live; |
236 sigset_t set, wset; | 236 sigset_t set, wset; |
237 | 237 |
238 delay = 1000; | 238 delay = 125; |
239 | 239 |
240 sigemptyset(&set); | 240 sigemptyset(&set); |
241 sigaddset(&set, SIGCHLD); | 241 sigaddset(&set, SIGCHLD); |
242 sigaddset(&set, ngx_signal_value(NGX_RECONFIGURE_SIGNAL)); | 242 sigaddset(&set, ngx_signal_value(NGX_RECONFIGURE_SIGNAL)); |
243 sigaddset(&set, ngx_signal_value(NGX_REOPEN_SIGNAL)); | 243 sigaddset(&set, ngx_signal_value(NGX_REOPEN_SIGNAL)); |
297 || ngx_process == NGX_PROCESS_PAUSED) | 297 || ngx_process == NGX_PROCESS_PAUSED) |
298 { | 298 { |
299 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | 299 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, |
300 "quit cycle"); | 300 "quit cycle"); |
301 | 301 |
302 if (delay < 10000) { | 302 if (delay < 15000) { |
303 delay *= 2; | 303 delay *= 2; |
304 } | 304 } |
305 | 305 |
306 if (sigprocmask(SIG_UNBLOCK, &set, NULL) == -1) { | 306 if (sigprocmask(SIG_UNBLOCK, &set, NULL) == -1) { |
307 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, | 307 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, |
343 ngx_processes[i--] = | 343 ngx_processes[i--] = |
344 ngx_processes[ngx_last_process]; | 344 ngx_processes[ngx_last_process]; |
345 } | 345 } |
346 } | 346 } |
347 | 347 |
348 if (live == 0 && ngx_process == NGX_PROCESS_QUITING) { | 348 if (live == 0) { |
349 if (ngx_delete_file(ctx->pid.name.data) | 349 if (ngx_process == NGX_PROCESS_QUITING) { |
350 if (ngx_delete_file(ctx->pid.name.data) | |
350 == NGX_FILE_ERROR) | 351 == NGX_FILE_ERROR) |
351 { | 352 { |
352 ngx_log_error(NGX_LOG_ALERT, cycle->log, | 353 ngx_log_error(NGX_LOG_ALERT, cycle->log, |
353 ngx_errno, | 354 ngx_errno, |
354 ngx_delete_file_n | 355 ngx_delete_file_n |
355 " \"%s\" failed", | 356 " \"%s\" failed", |
356 ctx->pid.name.data); | 357 ctx->pid.name.data); |
358 } | |
359 | |
360 } else { /* NGX_PROCESS_PAUSED */ | |
361 ngx_pause = 0; | |
357 } | 362 } |
358 | 363 |
359 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exit"); | 364 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exit"); |
360 exit(0); | 365 exit(0); |
361 } | 366 } |
362 } | 367 } |
363 } | 368 } |
364 | 369 |
365 if (ngx_terminate) { | 370 if (ngx_terminate) { |
366 ngx_signal_processes(cycle, | 371 if (delay > 10000) { |
372 ngx_signal_processes(cycle, SIGKILL); | |
373 } else { | |
374 ngx_signal_processes(cycle, | |
367 ngx_signal_value(NGX_TERMINATE_SIGNAL)); | 375 ngx_signal_value(NGX_TERMINATE_SIGNAL)); |
376 } | |
368 ngx_process = NGX_PROCESS_QUITING; | 377 ngx_process = NGX_PROCESS_QUITING; |
369 } | 378 } |
370 | 379 |
371 if (ngx_quit) { | 380 if (ngx_quit) { |
372 ngx_signal_processes(cycle, | 381 ngx_signal_processes(cycle, |
373 ngx_signal_value(NGX_SHUTDOWN_SIGNAL)); | 382 ngx_signal_value(NGX_SHUTDOWN_SIGNAL)); |
374 ngx_process = NGX_PROCESS_QUITING; | 383 ngx_process = NGX_PROCESS_QUITING; |
375 } | 384 } |
376 | 385 |
377 if (ngx_pause || ngx_process != NGX_PROCESS_PAUSED) { | 386 if (ngx_pause) { |
378 ngx_signal_processes(cycle, | 387 ngx_signal_processes(cycle, |
379 ngx_signal_value(NGX_SHUTDOWN_SIGNAL)); | 388 ngx_signal_value(NGX_SHUTDOWN_SIGNAL)); |
380 ngx_process = NGX_PROCESS_PAUSED; | 389 ngx_process = NGX_PROCESS_PAUSED; |
381 } | 390 } |
382 | 391 |
402 "reopening logs"); | 411 "reopening logs"); |
403 ngx_reopen_files(cycle); | 412 ngx_reopen_files(cycle); |
404 ngx_reopen = 0; | 413 ngx_reopen = 0; |
405 } | 414 } |
406 | 415 |
416 if (first) { | |
417 for (i = 0; i < ngx_last_process; i++) { | |
418 if (!ngx_processes[i].detached) { | |
419 ngx_processes[i].signal = 1; | |
420 } | |
421 } | |
422 first = 1; | |
423 } | |
424 | |
407 } | 425 } |
408 | 426 |
409 if (ngx_pause) { | 427 if (ngx_process == NGX_PROCESS_PAUSED) { |
410 ngx_pause = 0; | |
411 ngx_process = NGX_PROCESS_MASTER; | 428 ngx_process = NGX_PROCESS_MASTER; |
412 | 429 |
413 } else { | 430 } else { |
414 cycle = ngx_init_cycle(cycle); | 431 cycle = ngx_init_cycle(cycle); |
415 if (cycle == NULL) { | 432 if (cycle == NULL) { |