From 14eb97f1b3929933436a163786a0790904172198 Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Fri, 9 Oct 2020 11:19:25 -0400 Subject: [PATCH] [core] dup FILE_CHUNK fd when splitting FILE_CHUNK --- src/chunk.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/chunk.c b/src/chunk.c index 29f1e669..91566a5f 100644 --- a/src/chunk.c +++ b/src/chunk.c @@ -507,6 +507,8 @@ void chunkqueue_steal(chunkqueue * const restrict dest, chunkqueue * const restr case FILE_CHUNK: /* tempfile flag is in "last" chunk after the split */ chunkqueue_append_file(dest, c->mem, c->file.start + c->offset, use); + if (c->file.fd >= 0) + dest->last->file.fd = fdevent_dup_cloexec(c->file.fd); break; } @@ -679,6 +681,8 @@ int chunkqueue_steal_with_tempfiles(chunkqueue * const restrict dest, chunkqueue /* partial chunk with length "use" */ /* tempfile flag is in "last" chunk after the split */ chunkqueue_append_file(dest, c->mem, c->file.start + c->offset, use); + if (c->file.fd >= 0) + dest->last->file.fd = fdevent_dup_cloexec(c->file.fd); c->offset += use; force_assert(0 == len);