From f2efd7f97baf6ab5d590ac7642bbf7317f8c47ed Mon Sep 17 00:00:00 2001 From: sr Date: Thu, 18 Jul 2013 13:47:01 +0200 Subject: kernel module changes --- src/server/server.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/server/server.c') diff --git a/src/server/server.c b/src/server/server.c index 38635c9..6e49eb0 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -96,6 +96,7 @@ void dnbd3_cleanup() { int i; + _shutdown = TRUE; memlogf( "INFO: Cleanup...\n" ); for (int i = 0; i < socket_count; ++i) { @@ -108,6 +109,7 @@ void dnbd3_cleanup() // Clean up clients spin_lock( &_clients_lock ); for (i = 0; i < _num_clients; ++i) { + if ( _clients[i] == NULL ) continue; dnbd3_client_t * const client = _clients[i]; spin_lock( &client->lock ); if ( client->sock >= 0 ) shutdown( client->sock, SHUT_RDWR ); @@ -122,11 +124,14 @@ void dnbd3_cleanup() // Clean up images spin_lock( &_images_lock ); for (i = 0; i < _num_images; ++i) { + if ( _images[i] == NULL ) continue; _images[i] = image_free( _images[i] ); } _num_images = 0; spin_unlock( &_images_lock ); + debug_locks_stop_watchdog(); + exit( EXIT_SUCCESS ); } @@ -335,11 +340,11 @@ dnbd3_client_t* dnbd3_free_client(dnbd3_client_t *client) { spin_lock( &client->lock ); /* - for (it = client->sendqueue; it; it = it->next) { - free( it->data ); - } - g_slist_free( client->sendqueue ); - */ + for (it = client->sendqueue; it; it = it->next) { + free( it->data ); + } + g_slist_free( client->sendqueue ); + */ if ( client->sock >= 0 ) close( client->sock ); client->sock = -1; if ( client->image != NULL ) image_release( client->image ); -- cgit v1.2.3-55-g7522