git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[WIP 8/8] remote-curl: in v2, fill credentials if needed

From
JTJonathan Tan <jonathantanmy@google.com>
Date
Jan 16, 2019, 22:42 UTC
Message-ID
<f19beb723416df54e15cecc4db0d54408abdf6e7.1547677183.git.jonathantanmy@google.com>
In-Reply-To
<cover.1547677183.git.jonathantanmy@google.com>

In post_rpc(), remote-curl calls credential_fill() if HTTP_REAUTH is returned, but this is not true in proxy_request(). Do this in proxy_request() too.

When t5551 is run using GIT_TEST_PROTOCOL_VERSION=2, one of the tests that used to fail now pass.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
---
 remote-curl.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/remote-curl.c b/remote-curl.c
index 0d8fe19cc7..cd6749032a 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -1264,7 +1264,9 @@ static size_t proxy_out(char *buffer, size_t eltsize,
 static int proxy_request(struct proxy_state *p)
 {
 	struct active_request_slot *slot;
+	int err;
 
+retry:
 	slot = get_active_slot();
 
 	curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
@@ -1281,7 +1283,12 @@ static int proxy_request(struct proxy_state *p)
 	curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, proxy_out);
 	curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, p);
 
-	if (run_slot(slot, NULL) != HTTP_OK)
+	err = run_slot(slot, NULL);
+	if (err == HTTP_REAUTH) {
+		credential_fill(&http_auth);
+		goto retry;
+	}
+	if (err != HTTP_OK)
 		return -1;
 
 	return 0;
-- 
2.19.0.271.gfe8321ec05.dirty
Previous: Jonathan TanNext: Ævar Arnfjörð Bjarmason
Message 9 of 12 in “[WIP 0/8] Trying to revive GIT_TEST_PROTOCOL_VERSION”
  1. Jonathan TanJan 16, 2019
  2. 1/8 tests: define GIT_TEST_PROTOCOL_VERSIONJonathan Tan, Jan 16, 2019
  3. 2/8 tests: always test fetch of unreachable with v0Jonathan Tan, Jan 16, 2019
  4. 3/8 t5503: fix overspecification of trace expectationJonathan Tan, Jan 16, 2019
  5. 4/8 t5512: compensate for v0 only sending HEAD symrefsJonathan Tan, Jan 16, 2019
  6. 5/8 t5700: only run with protocol version 1Jonathan Tan, Jan 16, 2019
  7. 6/8 tests: fix protocol version for overspecificationsJonathan Tan, Jan 16, 2019
  8. 7/8 t5552: compensate for v2 filtering ref adv.Jonathan Tan, Jan 16, 2019
  9. 8/8 remote-curl: in v2, fill credentials if neededJonathan Tan, Jan 16, 2019
  10. Ævar Arnfjörð BjarmasonJan 17, 2019
  11. Jonathan TanJan 17, 2019
  12. Junio C HamanoJan 17, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.