Merge pull request #3478 from edolstra/ignore-failed-data

Downloader: Only write data to the sink on a 200 response
This commit is contained in:
Eelco Dolstra 2020-04-08 17:15:53 +02:00 committed by GitHub
commit 96f3c36709
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -83,8 +83,15 @@ struct CurlDownloader : public Downloader
, callback(std::move(callback)) , callback(std::move(callback))
, finalSink([this](const unsigned char * data, size_t len) { , finalSink([this](const unsigned char * data, size_t len) {
if (this->request.dataCallback) { if (this->request.dataCallback) {
writtenToSink += len; long httpStatus = 0;
this->request.dataCallback((char *) data, len); curl_easy_getinfo(req, CURLINFO_RESPONSE_CODE, &httpStatus);
/* Only write data to the sink if this is a
successful response. */
if (httpStatus == 0 || httpStatus == 200 || httpStatus == 201 || httpStatus == 206) {
writtenToSink += len;
this->request.dataCallback((char *) data, len);
}
} else } else
this->result.data->append((char *) data, len); this->result.data->append((char *) data, len);
}) })