Changeset 1658
- Timestamp:
- 02/05/05 14:11:05 (4 years ago)
- Files:
-
- wired/trunk/wired/files.c (modified) (2 diffs)
- wired/trunk/wired/main.c (modified) (6 diffs)
- wired/trunk/wired/main.h (modified) (1 diff)
- wired/trunk/wired/server.c (modified) (3 diffs)
- wired/trunk/wired/trackers.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
wired/trunk/wired/files.c
r763 r1658 1 /* $Id : files.c,v 1.78 2005/01/15 21:24:38 morris Exp$ */1 /* $Id$ */ 2 2 3 3 /* … … 1004 1004 double start, interval; 1005 1005 1006 wd_block_signals();1007 1008 1006 za_log_info("Indexing files..."); 1009 1007 wired/trunk/wired/main.c
r1631 r1658 73 73 static void wd_delete_status(void); 74 74 75 static void wd_init_signals(void); 75 static void wd_block_signals(void); 76 static int wd_wait_signals(void); 76 77 static void * wd_signal_thread(void *); 77 static void wd_sig_reload(int); 78 static void wd_sig_reregister(int); 79 static void wd_sig_reindex(int); 80 static void wd_sig_quit(int); 81 82 83 volatile sig_atomic_t wd_running = 1; 84 volatile sig_atomic_t wd_reload; 85 volatile sig_atomic_t wd_register; 86 volatile sig_atomic_t wd_index; 87 volatile sig_atomic_t wd_signal; 78 79 80 bool wd_running = true; 88 81 89 82 char wd_root[ZA_PATH_SIZE]; … … 246 239 /* init subsystems */ 247 240 wd_init_ssl(); 248 wd_init_signals();241 //wd_init_signals(); 249 242 wd_init_chats(); 250 243 wd_init_clients(); … … 315 308 316 309 /* create server threads after privilege drop */ 310 wd_block_signals(); 317 311 za_fork_timers(); 318 312 wd_fork_server(); … … 333 327 wd_signal_thread(NULL); 334 328 335 /* dropped out of loop */ 336 switch(wd_signal) { 337 case SIGINT: 338 za_log_info("Signal INT received, quitting"); 339 break; 340 341 case SIGQUIT: 342 za_log_info("Signal QUIT received, quitting"); 343 break; 344 345 case SIGTERM: 346 za_log_info("Signal TERM received, quitting"); 347 break; 348 } 349 329 /* dropped out */ 350 330 wd_exit_clients(); 351 331 … … 491 471 #pragma mark - 492 472 493 static void wd_init_signals(void) { 494 signal(SIGPIPE, SIG_IGN); 495 signal(SIGHUP, wd_sig_reload); 496 signal(SIGUSR1, wd_sig_reregister); 497 signal(SIGUSR2, wd_sig_reindex); 498 signal(SIGINT, wd_sig_quit); 499 signal(SIGTERM, wd_sig_quit); 500 signal(SIGQUIT, wd_sig_quit); 501 } 502 503 504 505 void wd_block_signals(void) { 473 static void wd_block_signals(void) { 506 474 sigset_t signals; 507 475 … … 520 488 521 489 490 static int wd_wait_signals(void) { 491 sigset_t signals; 492 int signal; 493 494 sigemptyset(&signals); 495 sigaddset(&signals, SIGPIPE); 496 sigaddset(&signals, SIGHUP); 497 sigaddset(&signals, SIGUSR1); 498 sigaddset(&signals, SIGUSR2); 499 sigaddset(&signals, SIGINT); 500 sigaddset(&signals, SIGTERM); 501 sigaddset(&signals, SIGQUIT); 502 503 sigwait(&signals, &signal); 504 505 return signal; 506 } 507 508 509 522 510 void * wd_signal_thread(void *arg) { 511 int signal; 512 523 513 while(wd_running) { 524 /* check for config reload */ 525 if(wd_reload) { 526 za_log_info("Signal HUP received, reloading configuration"); 527 wd_read_config(); 528 wd_apply_config(); 529 530 wd_reload = 0; 531 } 532 533 /* check for register reload */ 534 if(wd_register) { 535 if(!wd_settings._register) { 536 za_log_info("Signal USR1 ignored, trackers not enabled"); 537 } else { 538 za_log_info("Signal USR1 received, registering with trackers"); 539 wd_trackers_register(); 540 } 541 542 wd_register = 0; 543 } 544 545 /* check for index reload */ 546 if(wd_index) { 547 if(strlen(wd_settings.index) == 0) { 548 za_log_warn("Signal USR2 ignored, index not enabled"); 549 } else { 550 za_log_info("Signal USR2 received, indexing files"); 551 wd_index_files(); 552 } 553 554 wd_index = 0; 555 } 556 557 sleep(600); 514 signal = wd_wait_signals(); 515 516 switch(signal) { 517 case SIGHUP: 518 za_log_info("Signal HUP received, reloading configuration"); 519 wd_read_config(); 520 wd_apply_config(); 521 break; 522 523 case SIGUSR1: 524 if(!wd_settings._register) { 525 za_log_info("Signal USR1 ignored, trackers not enabled"); 526 } else { 527 za_log_info("Signal USR1 received, registering with trackers"); 528 wd_trackers_register(); 529 } 530 break; 531 532 case SIGUSR2: 533 if(strlen(wd_settings.index) == 0) { 534 za_log_warn("Signal USR2 ignored, index not enabled"); 535 } else { 536 za_log_info("Signal USR2 received, indexing files"); 537 wd_index_files(); 538 } 539 break; 540 541 case SIGINT: 542 za_log_info("Signal INT received, quitting"); 543 wd_running = false; 544 break; 545 546 case SIGQUIT: 547 za_log_info("Signal QUIT received, quitting"); 548 wd_running = false; 549 break; 550 551 case SIGTERM: 552 za_log_info("Signal TERM received, quitting"); 553 wd_running = false; 554 break; 555 } 558 556 } 559 557 560 558 return NULL; 561 559 } 562 563 564 565 static void wd_sig_reload(int sigraised) {566 wd_reload = 1;567 wd_signal = sigraised;568 }569 570 571 572 static void wd_sig_reregister(int sigraised) {573 wd_register = 1;574 wd_signal = sigraised;575 }576 577 578 static void wd_sig_reindex(int sigraised) {579 wd_index = 1;580 wd_signal = sigraised;581 }582 583 584 static void wd_sig_quit(int sigraised) {585 wd_running = 0;586 wd_signal = sigraised;587 }wired/trunk/wired/main.h
r1587 r1658 42 42 void wd_write_status(bool); 43 43 44 void wd_block_signals(void);45 44 46 47 extern volatile sig_atomic_t wd_running; 48 extern volatile sig_atomic_t wd_reload; 49 extern volatile sig_atomic_t wd_register; 50 extern volatile sig_atomic_t wd_index; 51 extern volatile sig_atomic_t wd_signal; 45 extern bool wd_running; 52 46 53 47 extern char wd_config[ZA_PATH_SIZE]; wired/trunk/wired/server.c
r1648 r1658 414 414 int err, length; 415 415 416 wd_block_signals();417 418 416 while(wd_running) { 419 417 length = sizeof(ss); … … 474 472 int err, length; 475 473 476 wd_block_signals();477 478 474 while(wd_running) { 479 475 length = sizeof(ss); … … 584 580 CFNetServiceRef service; 585 581 CFStringRef name; 586 587 wd_block_signals();588 582 589 583 while(wd_running) { wired/trunk/wired/trackers.c
r1643 r1658 267 267 const char *argument; 268 268 269 wd_block_signals();270 271 269 ZA_LIST_FOREACH(tracker->addresses, node, address) { 272 270 tracker->active = false;
