Skip to content

Commit 07e3ddc

Browse files
committed
Fix password based authentication for LFS
Codereview - only set password based authorization if none is provided via action object (lfs-test-server)
1 parent 058d3ab commit 07e3ddc

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

p4-fusion/lfs/communication/lfscomm.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -390,11 +390,13 @@ Communicator::UploadResult PerformUpload(const std::string& uploadUrl, const std
390390
uploadHeaders = curl_slist_append(uploadHeaders, "Accept: application/vnd.git-lfs");
391391
}
392392

393+
const Credentials& authToUse = (actionHeaders.find("Authorization") == actionHeaders.end()) ? auth : Credentials();
394+
393395
// Add action-specific headers from the batch response
394396
uploadHeaders = CreateHeadersFromMap(actionHeaders, uploadHeaders);
395397

396398
RequestResult uploadResult = {};
397-
SetupRequest(curl.get(), uploadUrl, fileContents.data(), fileContents.size(), uploadHeaders, &uploadResult, auth);
399+
SetupRequest(curl.get(), uploadUrl, fileContents.data(), fileContents.size(), uploadHeaders, &uploadResult, authToUse);
398400
curl_easy_setopt(curl.get(), CURLOPT_CUSTOMREQUEST, "PUT");
399401

400402
uploadResult = PerformRequestWithRetry([&]() -> RequestResult
@@ -451,10 +453,10 @@ bool PerformVerify(const std::string& verifyUrl, const std::string& oid, size_t
451453
// Add action-specific headers from the batch response
452454
verifyHeaders = CreateHeadersFromMap(actionHeaders, verifyHeaders);
453455

454-
// Perform request without authentication (headers from action should contain auth)
455-
RequestResult verifyResult = {};
456-
SetupRequest(curl.get(), verifyUrl, verifyPayload.data(), verifyPayload.size(), verifyHeaders, &verifyResult, auth);
456+
const Credentials& authToUse = (actionHeaders.find("Authorization") == actionHeaders.end()) ? auth : Credentials();
457457

458+
RequestResult verifyResult = {};
459+
SetupRequest(curl.get(), verifyUrl, verifyPayload.data(), verifyPayload.size(), verifyHeaders, &verifyResult, authToUse);
458460
verifyResult = PerformRequestWithRetry([&]() -> RequestResult
459461
{
460462
verifyResult.curl_result = curl_easy_perform(curl.get());

0 commit comments

Comments
 (0)