diff --git a/src/client/client.c b/src/client/client.c index ab075bc..f2e3875 100644 --- a/src/client/client.c +++ b/src/client/client.c @@ -32,7 +32,7 @@ int send_chunk(Client *client, Chunk *chunk, Config *config) { } else if (config->use_sendfile && !config->use_compression) { for (int i = 0; i < chunk->element_count; i++) { send_status(client->file_descriptor, STATUS_NEXT); - file_send_sendfile(chunk->items[i], client->file_descriptor); + file_send_sendfile(chunk->items[i], client->file_descriptor, config->use_metadata); } } else { for (int i = 0; i < chunk->element_count; i++) { diff --git a/src/shared/file.c b/src/shared/file.c index 916bc68..c6190e6 100644 --- a/src/shared/file.c +++ b/src/shared/file.c @@ -131,8 +131,10 @@ void file_send_single_calls(File *file, int file_descriptor, bool use_metadata) send_data(file_descriptor, file->data->data, file->data->size); } -void file_send_sendfile(File *file, int file_descriptor) { +void file_send_sendfile(File *file, int file_descriptor, bool use_metadata) { send_str(file_descriptor, file->path); + if (use_metadata) + metadata_send(file_descriptor, file->metadata); int fd = open(file->path, O_RDONLY); if (fd == -1) { diff --git a/src/shared/file.h b/src/shared/file.h index 649deb9..f6d5cb3 100644 --- a/src/shared/file.h +++ b/src/shared/file.h @@ -24,7 +24,7 @@ void file_destroy(void *item); void file_load_data(File *file); void file_print(void *item); void file_send_single_calls(File *file, int file_descriptor, bool use_metadata); -void file_send_sendfile(File *file, int file_descriptor); +void file_send_sendfile(File *file, int file_descriptor, bool use_metadata); size_t file_content_to_buffer(File *file); FileMetadata *file_metadata_create(struct stat *stats); void file_metadata_destroy(void *metadata);