diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2018-03-21T22·42+0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2018-03-21T22·42+0100 |
commit | 97002b684c902dadcd351a67208f9c2a88ff8f8f (patch) | |
tree | 10513c3593356428c632513033a053deb3bd6dfc | |
parent | 11898d6a37c80d4e78fc2df44617335669dfa95e (diff) |
Make 'nix copy --to daemon' run in constant memory
-rw-r--r-- | src/libstore/remote-store.cc | 7 | ||||
-rw-r--r-- | src/libstore/remote-store.hh | 2 |
2 files changed, 4 insertions, 5 deletions
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc index 8f0b65557ac4..1fd33c5a9bde 100644 --- a/src/libstore/remote-store.cc +++ b/src/libstore/remote-store.cc @@ -377,7 +377,7 @@ Path RemoteStore::queryPathFromHashPart(const string & hashPart) } -void RemoteStore::addToStore(const ValidPathInfo & info, const ref<std::string> & nar, +void RemoteStore::addToStore(const ValidPathInfo & info, Source & source, RepairFlag repair, CheckSigsFlag checkSigs, std::shared_ptr<FSAccessor> accessor) { auto conn(connections->get()); @@ -388,8 +388,7 @@ void RemoteStore::addToStore(const ValidPathInfo & info, const ref<std::string> StringSink sink; sink << 1 // == path follows ; - assert(nar->size() % 8 == 0); - sink((unsigned char *) nar->data(), nar->size()); + copyNAR(source, sink); sink << exportMagic << info.path @@ -412,7 +411,7 @@ void RemoteStore::addToStore(const ValidPathInfo & info, const ref<std::string> << info.references << info.registrationTime << info.narSize << info.ultimate << info.sigs << info.ca << repair << !checkSigs; - conn->to(*nar); + copyNAR(source, conn->to); conn->processStderr(); } } diff --git a/src/libstore/remote-store.hh b/src/libstore/remote-store.hh index 0cc20bf94194..95fa59a2069d 100644 --- a/src/libstore/remote-store.hh +++ b/src/libstore/remote-store.hh @@ -58,7 +58,7 @@ public: void querySubstitutablePathInfos(const PathSet & paths, SubstitutablePathInfos & infos) override; - void addToStore(const ValidPathInfo & info, const ref<std::string> & nar, + void addToStore(const ValidPathInfo & info, Source & nar, RepairFlag repair, CheckSigsFlag checkSigs, std::shared_ptr<FSAccessor> accessor) override; |