summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/server/altservers.c2
-rw-r--r--src/server/net.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/server/altservers.c b/src/server/altservers.c
index 7923f1a..106e07a 100644
--- a/src/server/altservers.c
+++ b/src/server/altservers.c
@@ -524,6 +524,8 @@ static void *altservers_main(void *data)
uplink->betterFd = bestSock;
uplink->betterServer = servers[bestIndex];
uplink->rttTestResult = RTT_DOCHANGE;
+ static uint64_t counter = 1;
+ write( uplink->signal, &counter, sizeof(counter) );
} else if (bestSock == -1) {
// No server was reachable
uplink->rttTestResult = RTT_NOT_REACHABLE;
diff --git a/src/server/net.c b/src/server/net.c
index 7d7ecb4..a0362c2 100644
--- a/src/server/net.c
+++ b/src/server/net.c
@@ -302,8 +302,9 @@ void *net_client_handler(void *dnbd3_client)
if ( request.size != 0 ) {
// Send payload if request length > 0
size_t done = 0;
+ off_t offset = (off_t)request.offset;
while ( done < request.size ) {
- const ssize_t ret = sendfile( client->sock, image_file, (off_t *)&request.offset, request.size );
+ const ssize_t ret = sendfile( client->sock, image_file, &offset, request.size - done );
if ( ret <= 0 ) {
pthread_mutex_unlock( &client->sendMutex );
printf( "[ERROR] sendfile failed (image to net. ret=%d, sent %d/%d, errno=%d)\n",