From d39c427e9acd810c9337bd77eb64996ad5fb4c2d Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 12 Nov 2013 18:52:17 +0100 Subject: [SERVER] Shut down altservers finder properly --- src/server/altservers.c | 10 ++++++---- src/server/altservers.h | 2 ++ src/server/server.c | 2 ++ 3 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/server/altservers.c b/src/server/altservers.c index 7360791..5317936 100644 --- a/src/server/altservers.c +++ b/src/server/altservers.c @@ -51,6 +51,7 @@ void altservers_init() void altservers_shutdown() { if ( !initDone ) return; + write( signalPipe, "", 1 ); // Wake altservers thread up pthread_join( altThread, NULL ); } @@ -345,7 +346,7 @@ static void *altservers_main(void *data) dnbd3_host_t servers[ALTS + 1]; serialized_buffer_t serialized; struct timespec start, end; - time_t nextCacheMapSave = time(NULL) + 120; + time_t nextCacheMapSave = time( NULL ) + 120; setThreadName( "altserver-check" ); blockNoncriticalSignals(); @@ -386,6 +387,7 @@ static void *altservers_main(void *data) memlogf( "[WARNING] epoll_wait() error in uplink_connector" ); usleep( 100000 ); } + if ( _shutdown ) goto cleanup; // Empty pipe do { ret = read( readPipe, buffer, sizeof buffer ); @@ -521,10 +523,10 @@ static void *altservers_main(void *data) pthread_mutex_unlock( &pendingLockConsume ); } // Save cache maps of all images if applicable - const time_t now = time(NULL); - if (now > nextCacheMapSave) { + const time_t now = time( NULL ); + if ( now > nextCacheMapSave ) { nextCacheMapSave = now + SERVER_CACHE_MAP_SAVE_INTERVAL; - printf("[DEBUG] Saving cache maps...\n"); + printf( "[DEBUG] Saving cache maps...\n" ); image_saveAllCacheMaps(); } } diff --git a/src/server/altservers.h b/src/server/altservers.h index de7643c..cbe99e2 100644 --- a/src/server/altservers.h +++ b/src/server/altservers.h @@ -5,6 +5,8 @@ void altservers_init(); +void altservers_shutdown(); + int altservers_load(); int altservers_add(dnbd3_host_t *host, const char *comment, const int isPrivate, const int isClientOnly); diff --git a/src/server/server.c b/src/server/server.c index 5c54333..2d1448c 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -118,6 +118,8 @@ void dnbd3_cleanup() } socket_count = 0; + altservers_shutdown(); + // Terminate all uplinks image_killUplinks(); -- cgit v1.2.3-55-g7522