fix chunk size split logic

Add remainder bytes to the last chunk instead.
master
tiptorrent development team 2021-09-24 10:27:35 +02:00
parent 97fc159ff1
commit 2f120d9cd2
1 changed files with 7 additions and 11 deletions

View File

@ -167,6 +167,7 @@ int tip_client_state_process_payload(struct tip_client *cli)
int tip_client_state_process_payload_reply(struct tip_client *cli)
{
uint64_t chunk_size;
uint32_t remainder;
off_t chunk_offset;
char buf[1024];
int fd;
@ -191,18 +192,13 @@ int tip_client_state_process_payload_reply(struct tip_client *cli)
break;
chunk_size = cli->size / MAX_CHUNKS;
if (cli->size % MAX_CHUNKS) {
if (cli->chunk < MAX_CHUNKS - 1) {
chunk_size++;
chunk_offset = chunk_size * cli->chunk;
} else {
chunk_offset = chunk_size * cli->chunk;
chunk_offset += MAX_CHUNKS - 1;
chunk_size--;
}
} else {
chunk_offset = chunk_size * cli->chunk;
chunk_offset = chunk_size * cli->chunk;
if (cli->chunk == MAX_CHUNKS - 1) {
remainder = cli->size % MAX_CHUNKS;
chunk_size += remainder;
}
cli->size = chunk_size;
cli->offset = chunk_offset;
break;