diff options
author | Simon Rettberg | 2013-08-28 17:54:19 +0200 |
---|---|---|
committer | Simon Rettberg | 2013-08-28 17:54:19 +0200 |
commit | bfdac5b274d8ca371307d2b4b417092ba25f11ab (patch) | |
tree | c62b57b0d56995057f152f1e1273dc3383a709a1 /src/server/net.c | |
parent | [SERVER] On-the-fly transparent proxying (diff) | |
download | dnbd3-bfdac5b274d8ca371307d2b4b417092ba25f11ab.tar.gz dnbd3-bfdac5b274d8ca371307d2b4b417092ba25f11ab.tar.xz dnbd3-bfdac5b274d8ca371307d2b4b417092ba25f11ab.zip |
[SERVER] Copy CRC-32 list from uplink server if available
Split up helper.c, move file/disk related functions to fileutil.c
Uplink: Make sure relayed requests are at least 1MiB
Diffstat (limited to 'src/server/net.c')
-rw-r--r-- | src/server/net.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/server/net.c b/src/server/net.c index 4e25564..cd38205 100644 --- a/src/server/net.c +++ b/src/server/net.c @@ -329,10 +329,13 @@ void *net_client_handler(void *dnbd3_client) reply.cmd = CMD_GET_CRC32; if ( image->crc32 == NULL ) { reply.size = 0; + send_reply( client->sock, &reply, NULL ); } else { - reply.size = IMGSIZE_TO_HASHBLOCKS(image->filesize) * 4; + const int size = reply.size = (IMGSIZE_TO_HASHBLOCKS(image->filesize) + 1) * sizeof(uint32_t); + send_reply( client->sock, &reply, NULL ); + send( client->sock, &image->masterCrc32, sizeof(uint32_t), 0 ); + send( client->sock, image->crc32, size - sizeof(uint32_t), 0 ); } - send_reply( client->sock, &reply, image->crc32 ); break; default: |