[WIP 8/8] remote-curl: in v2, fill credentials if needed
- From
- Jonathan 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