1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-08 11:36:03 +01:00

libstore/filetransfer: Add HttpMethod::PUT

This got lost in f1968ea38e and
now we had incorrect logs that confused "downloading" when we were
in fact "uploading" things.
This commit is contained in:
Sergei Zimmerman 2025-10-29 02:48:26 +03:00
parent 70176ed317
commit ae49074548
No known key found for this signature in database
4 changed files with 8 additions and 2 deletions

View file

@ -394,9 +394,11 @@ struct curlFileTransfer : public FileTransfer
if (request.method == HttpMethod::POST) {
curl_easy_setopt(req, CURLOPT_POST, 1L);
curl_easy_setopt(req, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t) request.data->length());
} else {
} else if (request.method == HttpMethod::PUT) {
curl_easy_setopt(req, CURLOPT_UPLOAD, 1L);
curl_easy_setopt(req, CURLOPT_INFILESIZE_LARGE, (curl_off_t) request.data->length());
} else {
unreachable();
}
curl_easy_setopt(req, CURLOPT_READFUNCTION, readCallbackWrapper);
curl_easy_setopt(req, CURLOPT_READDATA, this);

View file

@ -141,7 +141,7 @@ void HttpBinaryCacheStore::upsertFile(
uint64_t sizeHint)
{
auto req = makeRequest(path);
req.method = HttpMethod::PUT;
auto data = StreamToSourceAdapter(istream).drain();
auto compressionMethod = getCompressionMethod(path);

View file

@ -88,6 +88,7 @@ extern const unsigned int RETRY_TIME_MS_DEFAULT;
*/
enum struct HttpMethod {
GET,
PUT,
HEAD,
POST,
DELETE,
@ -147,7 +148,9 @@ struct FileTransferRequest
case HttpMethod::HEAD:
case HttpMethod::GET:
return "download";
case HttpMethod::PUT:
case HttpMethod::POST:
assert(data);
return "upload";
case HttpMethod::DELETE:
return "delet";

View file

@ -101,6 +101,7 @@ std::string
S3BinaryCacheStore::uploadPart(std::string_view key, std::string_view uploadId, uint64_t partNumber, std::string data)
{
auto req = makeRequest(key);
req.method = HttpMethod::PUT;
req.setupForS3();
auto url = req.uri.parsed();