mirror of
git://erdgeist.org/opentracker
synced 2025-02-04 19:16:23 +00:00
Start an extra thread to update timer cache. Using signals was unnecessary
This commit is contained in:
parent
52d9829f81
commit
301faeb10c
@ -70,10 +70,6 @@ static void signal_handler( int s ) {
|
||||
#endif
|
||||
|
||||
exit( 0 );
|
||||
} else if( s == SIGALRM ) {
|
||||
/* Maintain our copy of the clock. time() on BSDs is very expensive. */
|
||||
g_now_seconds = time(NULL);
|
||||
alarm(5);
|
||||
}
|
||||
}
|
||||
|
||||
@ -83,7 +79,6 @@ static void defaul_signal_handlers( void ) {
|
||||
sigaddset (&signal_mask, SIGPIPE);
|
||||
sigaddset (&signal_mask, SIGHUP);
|
||||
sigaddset (&signal_mask, SIGINT);
|
||||
sigaddset (&signal_mask, SIGALRM);
|
||||
pthread_sigmask (SIG_BLOCK, &signal_mask, NULL);
|
||||
}
|
||||
|
||||
@ -95,11 +90,10 @@ static void install_signal_handlers( void ) {
|
||||
sa.sa_handler = signal_handler;
|
||||
sigemptyset(&sa.sa_mask);
|
||||
sa.sa_flags = SA_RESTART;
|
||||
if ((sigaction(SIGINT, &sa, NULL) == -1) || (sigaction(SIGALRM, &sa, NULL) == -1) )
|
||||
if ((sigaction(SIGINT, &sa, NULL) == -1))
|
||||
panic( "install_signal_handlers" );
|
||||
|
||||
sigaddset (&signal_mask, SIGINT);
|
||||
sigaddset (&signal_mask, SIGALRM);
|
||||
pthread_sigmask (SIG_UNBLOCK, &signal_mask, NULL);
|
||||
}
|
||||
|
||||
@ -608,12 +602,22 @@ int drop_privileges ( const char * const serveruser, const char * const serverdi
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Maintain our copy of the clock. time() on BSDs is very expensive. */
|
||||
static void *time_caching_worker(void*args) {
|
||||
(void)args;
|
||||
while (1) {
|
||||
g_now_seconds = time(NULL);
|
||||
sleep(5);
|
||||
}
|
||||
}
|
||||
|
||||
int main( int argc, char **argv ) {
|
||||
ot_ip6 serverip;
|
||||
ot_net tmpnet;
|
||||
int bound = 0, scanon = 1;
|
||||
uint16_t tmpport;
|
||||
char * statefile = 0;
|
||||
pthread_t thread_id; /* time cacher */
|
||||
|
||||
memset( serverip, 0, sizeof(ot_ip6) );
|
||||
#ifdef WANT_V4_ONLY
|
||||
@ -690,6 +694,7 @@ int main( int argc, char **argv ) {
|
||||
panic( "drop_privileges failed, exiting. Last error");
|
||||
|
||||
g_now_seconds = time( NULL );
|
||||
pthread_create( &thread_id, NULL, time_caching_worker, NULL);
|
||||
|
||||
/* Create our self pipe which allows us to interrupt mainloops
|
||||
io_wait in case some data is available to send out */
|
||||
@ -714,9 +719,6 @@ int main( int argc, char **argv ) {
|
||||
if( !g_udp_workers )
|
||||
udp_init( -1, 0 );
|
||||
|
||||
/* Kick off our initial clock setting alarm */
|
||||
alarm(5);
|
||||
|
||||
server_mainloop( 0 );
|
||||
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user