diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-06-27 10:05:32 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-06-27 10:05:32 +0200 |
commit | 7c9e127a857bd0ff4ceb59b61d0122eb49d9f907 (patch) | |
tree | 979b96d0ef43dd4b967f7a05badc5c802d106d17 /examples | |
parent | 5799e3d91a4d929c990cf2569aa2a044515b29d7 (diff) | |
download | sink-7c9e127a857bd0ff4ceb59b61d0122eb49d9f907.tar.gz sink-7c9e127a857bd0ff4ceb59b61d0122eb49d9f907.zip |
Check if libcurl is built with ssl support.
On windows we lack ssl support it seems.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/mailtransportresource/mailtransport.cpp | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/examples/mailtransportresource/mailtransport.cpp b/examples/mailtransportresource/mailtransport.cpp index 361a89e..ce24d7f 100644 --- a/examples/mailtransportresource/mailtransport.cpp +++ b/examples/mailtransportresource/mailtransport.cpp | |||
@@ -21,20 +21,21 @@ | |||
21 | #include <QByteArray> | 21 | #include <QByteArray> |
22 | #include <QList> | 22 | #include <QList> |
23 | #include <QLoggingCategory> | 23 | #include <QLoggingCategory> |
24 | |||
25 | Q_LOGGING_CATEGORY(mailtransportCategory, "mailtransport") | ||
26 | |||
27 | extern "C" { | ||
28 | |||
29 | #include <stdio.h> | 24 | #include <stdio.h> |
30 | #include <string.h> | 25 | #include <string.h> |
31 | #include <curl/curl.h> | 26 | #include <curl/curl.h> |
32 | 27 | ||
28 | |||
29 | Q_LOGGING_CATEGORY(mailtransportCategory, "mailtransport") | ||
30 | |||
33 | struct upload_status { | 31 | struct upload_status { |
34 | int offset; | 32 | int offset; |
35 | const char *data; | 33 | const char *data; |
36 | }; | 34 | }; |
37 | 35 | ||
36 | |||
37 | extern "C" { | ||
38 | |||
38 | static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp) | 39 | static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp) |
39 | { | 40 | { |
40 | struct upload_status *upload_ctx = (struct upload_status *)userp; | 41 | struct upload_status *upload_ctx = (struct upload_status *)userp; |
@@ -58,6 +59,27 @@ static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp) | |||
58 | return 0; | 59 | return 0; |
59 | } | 60 | } |
60 | 61 | ||
62 | } | ||
63 | |||
64 | struct CurlVersionInfo { | ||
65 | bool supportsSsl; | ||
66 | QByteArray info; | ||
67 | }; | ||
68 | |||
69 | CurlVersionInfo getVersionInfo() | ||
70 | { | ||
71 | CurlVersionInfo versionInfo; | ||
72 | curl_version_info_data *data = curl_version_info(CURLVERSION_NOW); | ||
73 | if (data->ssl_version) { | ||
74 | versionInfo.info += "SSL support available: " + QByteArray{data->ssl_version} + "\n"; | ||
75 | versionInfo.supportsSsl = true; | ||
76 | } else { | ||
77 | versionInfo.info += "No SSL support available.\n"; | ||
78 | versionInfo.supportsSsl = false; | ||
79 | } | ||
80 | return versionInfo; | ||
81 | } | ||
82 | |||
61 | bool sendMessageCurl(const char *to[], int numTos, | 83 | bool sendMessageCurl(const char *to[], int numTos, |
62 | const char *cc[], int numCcs, | 84 | const char *cc[], int numCcs, |
63 | const char *msg, | 85 | const char *msg, |
@@ -152,8 +174,6 @@ bool sendMessageCurl(const char *to[], int numTos, | |||
152 | return false; | 174 | return false; |
153 | } | 175 | } |
154 | 176 | ||
155 | }; | ||
156 | |||
157 | MailTransport::SendResult MailTransport::sendMessage(const KMime::Message::Ptr &message, const QByteArray &server, const QByteArray &username, const QByteArray &password, const QByteArray &cacert, MailTransport::Options options) | 177 | MailTransport::SendResult MailTransport::sendMessage(const KMime::Message::Ptr &message, const QByteArray &server, const QByteArray &username, const QByteArray &password, const QByteArray &cacert, MailTransport::Options options) |
158 | { | 178 | { |
159 | QByteArray from(message->from(true)->mailboxes().isEmpty() ? QByteArray() : message->from(true)->mailboxes().first().address()); | 179 | QByteArray from(message->from(true)->mailboxes().isEmpty() ? QByteArray() : message->from(true)->mailboxes().first().address()); |
@@ -183,6 +203,11 @@ MailTransport::SendResult MailTransport::sendMessage(const KMime::Message::Ptr & | |||
183 | auto serverAddress = server; | 203 | auto serverAddress = server; |
184 | serverAddress.replace("smtps://", "smtp://"); | 204 | serverAddress.replace("smtps://", "smtp://"); |
185 | 205 | ||
206 | const auto versionInfo = getVersionInfo(); | ||
207 | if (useTls && !versionInfo.supportsSsl) { | ||
208 | qCWarning(mailtransportCategory) << "libcurl built without ssl support: " << versionInfo.info; | ||
209 | } | ||
210 | |||
186 | bool enableDebugOutput = QLoggingCategory{"mailtransport"}.isEnabled(QtDebugMsg); | 211 | bool enableDebugOutput = QLoggingCategory{"mailtransport"}.isEnabled(QtDebugMsg); |
187 | QByteArray errorMessage; | 212 | QByteArray errorMessage; |
188 | auto ret = sendMessageCurl(to, numTos, cc, numCcs, | 213 | auto ret = sendMessageCurl(to, numTos, cc, numCcs, |