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 <jonathanta...@google.com>
---
 remote-curl.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/remote-curl.c b/remote-curl.c
index 293bcdb95b..437a8e76d8 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -1295,7 +1295,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, "");
@@ -1312,7 +1314,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

Reply via email to