aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/local-store.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/local-store.cc')
-rw-r--r--src/libstore/local-store.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index 40a3bc194..17b4ecc73 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -1196,6 +1196,15 @@ void LocalStore::addToStore(const ValidPathInfo & info, Source & source,
if (checkSigs && pathInfoIsUntrusted(info))
throw Error("cannot add path '%s' because it lacks a signature by a trusted key", printStorePath(info.path));
+ /* In case we are not interested in reading the NAR: discard it. */
+ bool narRead = false;
+ Finally cleanup = [&]() {
+ if (!narRead) {
+ ParseSink sink;
+ parseDump(sink, source);
+ }
+ };
+
addTempRoot(info.path);
if (repair || !isValidPath(info.path)) {
@@ -1220,6 +1229,7 @@ void LocalStore::addToStore(const ValidPathInfo & info, Source & source,
TeeSource wrapperSource { source, hashSink };
+ narRead = true;
restorePath(realPath, wrapperSource);
auto hashResult = hashSink.finish();