diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2016-12-08 15:31:27 +0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2016-12-08 15:31:27 +0100 |
commit | e6a61b8da788efbbbb0eb690c49434b6b5fc9741 (patch) | |
tree | 919b3ac10266afe6684e89154fe7c61266773f6e /src/libstore | |
parent | 8df1a3b579719e118e6d93fff3e796df30f6185e (diff) |
Fix S3BinaryCacheStore
It failed with
AWS error uploading ‘6gaxphsyhg66mz0a00qghf9nqf7majs2.ls.xz’: Unable to parse ExceptionName: MissingContentLength Message: You must provide the Content-Length HTTP header.
possibly because the istringstream_nocopy introduced in
0d2ebb4373e509521f27a6e8f16bfd39d05b2188 doesn't supply the seek
method that the AWS library expects. So bring back the old version,
but only for S3BinaryCacheStore.
Diffstat (limited to 'src/libstore')
-rw-r--r-- | src/libstore/derivations.cc | 2 | ||||
-rw-r--r-- | src/libstore/s3-binary-cache-store.cc | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc index 5562d4689..d934bda38 100644 --- a/src/libstore/derivations.cc +++ b/src/libstore/derivations.cc @@ -155,7 +155,7 @@ static StringSet parseStrings(std::istream & str, bool arePaths) static Derivation parseDerivation(const string & s) { Derivation drv; - istringstream_nocopy str(s); + std::istringstream str(s); expect(str, "Derive(["); /* Parse the list of outputs. */ diff --git a/src/libstore/s3-binary-cache-store.cc b/src/libstore/s3-binary-cache-store.cc index 1bc8576a8..3c5101f00 100644 --- a/src/libstore/s3-binary-cache-store.cc +++ b/src/libstore/s3-binary-cache-store.cc @@ -18,6 +18,15 @@ namespace nix { +struct istringstream_nocopy : public std::stringstream +{ + istringstream_nocopy(const std::string & s) + { + rdbuf()->pubsetbuf( + (char *) s.data(), s.size()); + } +}; + struct S3Error : public Error { Aws::S3::S3Errors err; |