aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/download.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc
index 571c194ec..70cfaf0dd 100644
--- a/src/libstore/download.cc
+++ b/src/libstore/download.cc
@@ -311,8 +311,13 @@ struct CurlDownloader : public Downloader
debug("finished %s of '%s'; curl status = %d, HTTP status = %d, body = %d bytes",
request.verb(), request.uri, code, httpStatus, result.bodySize);
- if (decompressionSink)
- decompressionSink->finish();
+ if (decompressionSink) {
+ try {
+ decompressionSink->finish();
+ } catch (...) {
+ writeException = std::current_exception();
+ }
+ }
if (code == CURLE_WRITE_ERROR && result.etag == request.expectedETag) {
code = CURLE_OK;