aboutsummaryrefslogtreecommitdiffstats
path: root/http.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2021-03-26 14:59:02 -0700
committerJunio C Hamano <gitster@pobox.com>2021-03-26 14:59:02 -0700
commit8c81fce4b07c7e0f76960f35b6ffdc817c09b7ad (patch)
treea7a763d32d81fc2a79b65e6323e8f2389ea60e00 /http.c
parented953e1076c6a0dca1e2fd32ba8158a13929238c (diff)
parenta4a4439fdf2fa5867b3f30040be535cff65b8a42 (diff)
downloadgit-8c81fce4b07c7e0f76960f35b6ffdc817c09b7ad.tar.gz
Merge branch 'js/http-pki-credential-store'
The http codepath learned to let the credential layer to cache the password used to unlock a certificate that has successfully been used. * js/http-pki-credential-store: http: drop the check for an empty proxy password before approving http: store credential when PKI auth is used
Diffstat (limited to 'http.c')
-rw-r--r--http.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/http.c b/http.c
index 0e31fc21bc..70b0f15aef 100644
--- a/http.c
+++ b/http.c
@@ -1635,9 +1635,18 @@ static int handle_curl_result(struct slot_results *results)
if (results->curl_result == CURLE_OK) {
credential_approve(&http_auth);
- if (proxy_auth.password)
- credential_approve(&proxy_auth);
+ credential_approve(&proxy_auth);
+ credential_approve(&cert_auth);
return HTTP_OK;
+ } else if (results->curl_result == CURLE_SSL_CERTPROBLEM) {
+ /*
+ * We can't tell from here whether it's a bad path, bad
+ * certificate, bad password, or something else wrong
+ * with the certificate. So we reject the credential to
+ * avoid caching or saving a bad password.
+ */
+ credential_reject(&cert_auth);
+ return HTTP_NOAUTH;
} else if (missing_target(results))
return HTTP_MISSING_TARGET;
else if (results->http_code == 401) {