diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2016-03-03 10:48:24 +0100 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2016-03-03 11:18:03 +0100 |
commit | a4cba9d45384eec145537438a8e2d765c3a0bf11 (patch) | |
tree | d8a897aa6662d88b9c8ed4e9d82d59e214c20889 | |
parent | 25205737781ec0d73e57283f43e5d4fdf355a0dc (diff) | |
download | libgit2-a4cba9d45384eec145537438a8e2d765c3a0bf11.tar.gz |
winhttp: retry authentication
If the caller has provided bad authentication, give them another
apportunity to get it right until they give up. This brings WinHTTP in
line with the other transports.
-rw-r--r-- | src/transports/winhttp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/transports/winhttp.c b/src/transports/winhttp.c index ded041686..32b838084 100644 --- a/src/transports/winhttp.c +++ b/src/transports/winhttp.c @@ -926,10 +926,11 @@ replay: if (parse_unauthorized_response(s->request, &allowed_types, &t->auth_mechanism) < 0) return -1; - if (allowed_types && - (!t->cred || 0 == (t->cred->credtype & allowed_types))) { + if (allowed_types) { int cred_error = 1; + git_cred_free(t->cred); + t->cred = NULL; /* Start with the user-supplied credential callback, if present */ if (t->owner->cred_acquire_cb) { cred_error = t->owner->cred_acquire_cb(&t->cred, t->owner->url, |