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/libutil/util.hh | |
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/libutil/util.hh')
-rw-r--r-- | src/libutil/util.hh | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/src/libutil/util.hh b/src/libutil/util.hh index 1ede48a65..50b96f7ed 100644 --- a/src/libutil/util.hh +++ b/src/libutil/util.hh @@ -431,55 +431,4 @@ void callSuccess( } -/* A variant of std::istringstream that doesn't copy its string - argument. This is useful for large strings. The caller must ensure - that the string object is not destroyed while it's referenced by - this object. */ -class istringbuf_nocopy : public std::streambuf -{ - const std::string & s; - decltype(s.size()) off; - decltype(s.size()) size; -public: - istringbuf_nocopy(const std::string & s) : s{s}, off{0}, size{s.size()} - { - } - -private: - int_type underflow() - { - if (off == size) - return traits_type::eof(); - return traits_type::to_int_type(s[off]); - } - - int_type uflow() - { - if (off == size) - return traits_type::eof(); - return traits_type::to_int_type(s[off++]); - } - - int_type pbackfail(int_type ch) - { - if (off == 0 || (ch != traits_type::eof() && ch != s[off - 1])) - return traits_type::eof(); - - return traits_type::to_int_type(s[--off]); - } - - std::streamsize showmanyc() - { - return size - off; - } -}; - - -struct istringstream_nocopy : public std::iostream -{ - istringbuf_nocopy buf; - istringstream_nocopy(const std::string & s) : std::iostream(&buf), buf(s) {}; -}; - - } |