summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Morey-Chaisemartin <nicolas@morey-chaisemartin.com>2017-09-14 07:52:06 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-09-15 04:45:37 (GMT)
commit19079b3e7cdb6f14646e838cb04919e8eb9976a9 (patch)
tree467edd5a361a4de41e63761446b44115bf4a08e0
parent690307f3d1ae127e0ecb6198aeb44936c8dd9330 (diff)
downloadgit-19079b3e7cdb6f14646e838cb04919e8eb9976a9.zip
git-19079b3e7cdb6f14646e838cb04919e8eb9976a9.tar.gz
git-19079b3e7cdb6f14646e838cb04919e8eb9976a9.tar.bz2
imap_send: setup_curl: retreive credentials if not set in config file
Up to this point, the curl mode only supported getting the username and password from the gitconfig file while the legacy mode could also fetch them using the credential API. Signed-off-by: Nicolas Morey-Chaisemartin <nicolas@morey-chaisemartin.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--imap-send.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/imap-send.c b/imap-send.c
index 1b8fbbd..dd203da 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -1398,7 +1398,7 @@ static int append_msgs_to_imap(struct imap_server_conf *server,
}
#ifdef USE_CURL_FOR_IMAP_SEND
-static CURL *setup_curl(struct imap_server_conf *srvc)
+static CURL *setup_curl(struct imap_server_conf *srvc, struct credential *cred)
{
CURL *curl;
struct strbuf path = STRBUF_INIT;
@@ -1411,6 +1411,7 @@ static CURL *setup_curl(struct imap_server_conf *srvc)
if (!curl)
die("curl_easy_init failed");
+ server_fill_credential(&server, cred);
curl_easy_setopt(curl, CURLOPT_USERNAME, server.user);
curl_easy_setopt(curl, CURLOPT_PASSWORD, server.pass);
@@ -1460,8 +1461,9 @@ static int curl_append_msgs_to_imap(struct imap_server_conf *server,
struct buffer msgbuf = { STRBUF_INIT, 0 };
CURL *curl;
CURLcode res = CURLE_OK;
+ struct credential cred = CREDENTIAL_INIT;
- curl = setup_curl(server);
+ curl = setup_curl(server, &cred);
curl_easy_setopt(curl, CURLOPT_READDATA, &msgbuf);
fprintf(stderr, "sending %d message%s\n", total, (total != 1) ? "s" : "");
@@ -1496,6 +1498,19 @@ static int curl_append_msgs_to_imap(struct imap_server_conf *server,
curl_easy_cleanup(curl);
curl_global_cleanup();
+ if (cred.username) {
+ if (res == CURLE_OK)
+ credential_approve(&cred);
+#if LIBCURL_VERSION_NUM >= 0x070d01
+ else if (res == CURLE_LOGIN_DENIED)
+#else
+ else
+#endif
+ credential_reject(&cred);
+ }
+
+ credential_clear(&cred);
+
return res != CURLE_OK;
}
#endif