summaryrefslogtreecommitdiffstats
path: root/src/server/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/server.c')
-rw-r--r--src/server/server.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/server/server.c b/src/server/server.c
index 6a317fe..384ffa6 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -60,6 +60,8 @@ static bool sigReload = false, sigLogCycle = false;
static bool dnbd3_addClient(dnbd3_client_t *client);
static void dnbd3_handleSignal(int signum);
+static void* server_asyncImageListLoad(void *data);
+
/**
* Print help text for usage instructions
*/
@@ -258,7 +260,7 @@ int main(int argc, char *argv[])
if ( demonize ) daemon( 1, 0 );
spin_init( &_clients_lock, PTHREAD_PROCESS_PRIVATE );
- spin_init( &_images_lock, PTHREAD_PROCESS_PRIVATE );
+ image_serverStartup();
altservers_init();
integrity_init();
net_init();
@@ -306,9 +308,6 @@ int main(int argc, char *argv[])
socklen_t len;
int fd;
- // setup rpc
- //pthread_t thread_rpc;
- //thread_create(&(thread_rpc), NULL, &dnbd3_rpc_mainloop, NULL);
// Initialize thread pool
if ( !threadpool_init( 8 ) ) {
logadd( LOG_ERROR, "Could not init thread pool!\n" );
@@ -323,7 +322,7 @@ int main(int argc, char *argv[])
if ( sigReload ) {
sigReload = false;
logadd( LOG_INFO, "SIGUSR1 received, re-scanning image directory" );
- image_loadAll( NULL );
+ threadpool_run( &server_asyncImageListLoad, NULL );
}
if ( sigLogCycle ) {
sigLogCycle = false;
@@ -357,7 +356,7 @@ int main(int argc, char *argv[])
continue;
}
- if ( !threadpool_run( net_client_handler, (void *)dnbd3_client ) ) {
+ if ( !threadpool_run( &net_client_handler, (void *)dnbd3_client ) ) {
logadd( LOG_ERROR, "Could not start thread for new client." );
dnbd3_removeClient( dnbd3_client );
dnbd3_client = dnbd3_freeClient( dnbd3_client );
@@ -487,3 +486,10 @@ int dnbd3_serverUptime()
return (int)(time( NULL ) - startupTime);
}
+static void* server_asyncImageListLoad(void *data UNUSED)
+{
+ setThreadName( "img-list-loader" );
+ image_loadAll( NULL );
+ return NULL;
+}
+