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) {