From bf6792c0df2163a0501beb14feeb5135c4aa71c2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 17 Jul 2017 13:13:18 +0200 Subject: Always use base-16 for hashed mirror lookups In particular, don't use base-64, which we don't support. (We do have base-32 redirects for hysterical reasons.) Also, add a test for the hashed mirror feature. --- src/libstore/builtins.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/libstore') diff --git a/src/libstore/builtins.cc b/src/libstore/builtins.cc index b51b6f85cb0c..a01dbba4ede4 100644 --- a/src/libstore/builtins.cc +++ b/src/libstore/builtins.cc @@ -42,7 +42,8 @@ void builtinFetchurl(const BasicDerivation & drv, const std::string & netrcData) for (auto hashedMirror : settings.hashedMirrors.get()) try { if (!hasSuffix(hashedMirror, "/")) hashedMirror += '/'; - data = fetch(hashedMirror + getAttr("outputHashAlgo") + "/" + getAttr("outputHash")); + auto ht = parseHashType(getAttr("outputHashAlgo")); + data = fetch(hashedMirror + printHashType(ht) + "/" + Hash(getAttr("outputHash"), ht).to_string(Base16, false)); break; } catch (Error & e) { debug(e.what()); -- cgit 1.4.1