@@ -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;
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(-)