1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-28 01:11:15 +02:00

RemoteStore::addToStore(): Send NAR rather than string containing NAR

This allows the NAR to be streamed in the future (though we're not
doing that yet).
This commit is contained in:
Eelco Dolstra 2017-03-01 16:07:15 +01:00
parent 374908726b
commit f61f67ddee
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
5 changed files with 21 additions and 37 deletions

View file

@ -283,7 +283,7 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
}
HashType hashAlgo = parseHashType(s);
SavingSourceAdapter savedNAR(from);
TeeSource savedNAR(from);
RetrieveRegularNARSink savedRegular;
if (recursive) {
@ -297,7 +297,7 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
startWork();
if (!savedRegular.regular) throw Error("regular file expected");
Path path = store->addToStoreFromDump(recursive ? savedNAR.s : savedRegular.s, baseName, recursive, hashAlgo);
Path path = store->addToStoreFromDump(recursive ? *savedNAR.data : savedRegular.s, baseName, recursive, hashAlgo);
stopWork();
to << path;
@ -569,6 +569,7 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
}
case wopAddToStoreNar: {
bool repair, dontCheckSigs;
ValidPathInfo info;
info.path = readStorePath(*store, from);
from >> info.deriver;
@ -578,14 +579,16 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
info.references = readStorePaths<PathSet>(*store, from);
from >> info.registrationTime >> info.narSize >> info.ultimate;
info.sigs = readStrings<StringSet>(from);
from >> info.ca;
auto nar = make_ref<std::string>(readString(from));
bool repair, dontCheckSigs;
from >> repair >> dontCheckSigs;
from >> info.ca >> repair >> dontCheckSigs;
if (!trusted && dontCheckSigs)
dontCheckSigs = false;
TeeSource tee(from);
ParseSink sink;
parseDump(sink, tee);
startWork();
store->addToStore(info, nar, repair, dontCheckSigs, nullptr);
store->addToStore(info, tee.data, repair, dontCheckSigs, nullptr);
stopWork();
break;
}