summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2014-02-13 17:34:30 +0100
committerSimon Rettberg2014-02-13 17:34:30 +0100
commitbdd558b79fa78d6ab258aa4eea7004ebe1df5384 (patch)
tree8395847778dd6403c8ab9912ffed37794a6caa63
parent[*] Add automatic version string generation (diff)
downloaddnbd3-bdd558b79fa78d6ab258aa4eea7004ebe1df5384.tar.gz
dnbd3-bdd558b79fa78d6ab258aa4eea7004ebe1df5384.tar.xz
dnbd3-bdd558b79fa78d6ab258aa4eea7004ebe1df5384.zip
[SERVER] Thread and uplink handling
-rw-r--r--src/server/net.c1
-rw-r--r--src/server/server.c7
-rw-r--r--src/server/uplink.c1
3 files changed, 5 insertions, 4 deletions
diff --git a/src/server/net.c b/src/server/net.c
index 4ea95cf..b40413f 100644
--- a/src/server/net.c
+++ b/src/server/net.c
@@ -371,5 +371,6 @@ void *net_client_handler(void *dnbd3_client)
dnbd3_remove_client( client );
client->running = FALSE;
client = dnbd3_free_client( client );
+ pthread_exit( NULL );
return NULL ;
}
diff --git a/src/server/server.c b/src/server/server.c
index 968d59f..f19b4fe 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -328,10 +328,6 @@ int main(int argc, char *argv[])
//pthread_t thread_rpc;
//pthread_create(&(thread_rpc), NULL, &dnbd3_rpc_mainloop, NULL);
- pthread_attr_t threadAttrs;
- pthread_attr_init( &threadAttrs );
- pthread_attr_setdetachstate( &threadAttrs, PTHREAD_CREATE_DETACHED );
-
memlogf( "[INFO] Server is ready..." );
// +++++++++++++++++++++++++++++++++++++++++++++++++++ main loop
@@ -376,6 +372,9 @@ int main(int argc, char *argv[])
continue;
}
+ pthread_attr_t threadAttrs;
+ pthread_attr_init( &threadAttrs );
+ pthread_attr_setdetachstate( &threadAttrs, PTHREAD_CREATE_DETACHED );
if ( 0 != pthread_create( &(dnbd3_client->thread), &threadAttrs, net_client_handler, (void *)(uintptr_t)dnbd3_client ) ) {
memlogf( "[ERROR] Could not start thread for new client." );
dnbd3_remove_client( dnbd3_client );
diff --git a/src/server/uplink.c b/src/server/uplink.c
index c49ff35..b6f7887 100644
--- a/src/server/uplink.c
+++ b/src/server/uplink.c
@@ -384,6 +384,7 @@ static void* uplink_mainloop(void *data)
snprintf( buffer, sizeof(buffer), "[DEBUG WARNING] Starving request detected:\n"
"%s\n(from %" PRIu64 " to %" PRIu64 ", status: %d)\n", link->queue[i].client->image->lower_name,
link->queue[i].from, link->queue[i].to, link->queue[i].status );
+ link->queue[i].status = ULR_NEW;
spin_unlock( &link->queueLock );
printf("%s", buffer);
spin_lock( &link->queueLock );