diff options
author | Jesse Hathaway <jesse@mbuki-mvuki.org> | 2020-07-10 15:37:08 +0000 |
---|---|---|
committer | Jesse Hathaway <jesse@mbuki-mvuki.org> | 2020-07-10 15:37:08 +0000 |
commit | bd346313e0947dcef9e789c0ad05d131a80a12bd (patch) | |
tree | 26c966d3ea16ff2a38962f0a03d2cbb563cd7992 | |
parent | 8720ae8a2c9045cb9494d328e3fc6370decbb774 (diff) | |
download | libgit2-bd346313e0947dcef9e789c0ad05d131a80a12bd.tar.gz |
httpclient: only free challenges for current_server type
Prior to this commit we freed both the server and proxy auth challenges
in git_http_client_read_response. This works when the proxy needs auth
or when the server needs auth, but it does not work when both the proxy
and the server need auth as we erroneously remove the server auth
challenge before we have added them as server credentials. Instead only
remove the challenges for the current_server type.
Co-authored-by: Stephen Gelman <ssgelm@gmail.com>
-rw-r--r-- | src/transports/httpclient.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/transports/httpclient.c b/src/transports/httpclient.c index dda267833..715213052 100644 --- a/src/transports/httpclient.c +++ b/src/transports/httpclient.c @@ -1374,8 +1374,11 @@ int git_http_client_read_response( git_http_response_dispose(response); - git_vector_free_deep(&client->server.auth_challenges); - git_vector_free_deep(&client->proxy.auth_challenges); + if (client->current_server == PROXY) { + git_vector_free_deep(&client->proxy.auth_challenges); + } else if(client->current_server == SERVER) { + git_vector_free_deep(&client->server.auth_challenges); + } client->state = READING_RESPONSE; client->keepalive = 0; |