diff options
Diffstat (limited to 'desktop/source/minidump/minidump.cxx')
-rw-r--r-- | desktop/source/minidump/minidump.cxx | 50 |
1 files changed, 23 insertions, 27 deletions
diff --git a/desktop/source/minidump/minidump.cxx b/desktop/source/minidump/minidump.cxx index d61922cdaac6..0a31fff6f285 100644 --- a/desktop/source/minidump/minidump.cxx +++ b/desktop/source/minidump/minidump.cxx @@ -8,6 +8,7 @@ */ #include <desktop/minidump.hxx> +#include <sal/log.hxx> #include <map> #include <fstream> @@ -16,6 +17,8 @@ #include <curl/curl.h> +#include <systools/curlinit.hxx> + #ifdef _WIN32 #include <memory> #include <windows.h> @@ -94,6 +97,8 @@ static bool uploadContent(std::map<std::string, std::string>& parameters, std::s if (!curl) return false; + ::InitCurl_easy(curl); + std::string proxy, proxy_user_pwd, ca_certificate_file, file, url, version; getProperty("Proxy", proxy, parameters); @@ -131,27 +136,21 @@ static bool uploadContent(std::map<std::string, std::string>& parameters, std::s if (!ca_certificate_file.empty()) curl_easy_setopt(curl, CURLOPT_CAINFO, ca_certificate_file.c_str()); - curl_httppost* formpost = nullptr; - curl_httppost* lastptr = nullptr; + curl_mime* mime = curl_mime_init(curl); std::string additional_data = generate_json(parameters); - curl_formadd(&formpost, &lastptr, - CURLFORM_COPYNAME, "AdditionalData", - CURLFORM_COPYCONTENTS, additional_data.c_str(), - CURLFORM_END); + curl_mimepart* part = curl_mime_addpart(mime); + curl_mime_name(part, "AdditionalData"); + curl_mime_data(part, additional_data.c_str(), CURL_ZERO_TERMINATED); - curl_formadd(&formpost, &lastptr, - CURLFORM_COPYNAME, "Version", - CURLFORM_COPYCONTENTS, version.c_str(), - CURLFORM_END); + part = curl_mime_addpart(mime); + curl_mime_name(part, "Version"); + curl_mime_data(part, version.c_str(), CURL_ZERO_TERMINATED); - std::string response_body; - long response_code; - curl_formadd(&formpost, &lastptr, - CURLFORM_COPYNAME, "upload_file_minidump", - CURLFORM_FILE, file.c_str(), - CURLFORM_END); + part = curl_mime_addpart(mime); + curl_mime_name(part, "upload_file_minidump"); + curl_mime_filedata(part, file.c_str()); - curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); + curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime); // Disable 100-continue header. @@ -161,6 +160,7 @@ static bool uploadContent(std::map<std::string, std::string>& parameters, std::s curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); + std::string response_body; curl_easy_setopt(curl, CURLOPT_WRITEDATA, static_cast<void *>(&response_body)); @@ -168,18 +168,14 @@ static bool uploadContent(std::map<std::string, std::string>& parameters, std::s curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1); CURLcode cc = curl_easy_perform(curl); + long response_code; curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code); -#ifndef NDEBUG - if (cc != CURLE_OK) - fprintf(stderr, "Failed to send http request to %s, error: %s\n", - url.c_str(), - curl_easy_strerror(cc)); -#endif + SAL_WARN_IF(cc != CURLE_OK, "desktop", + "Failed to send http request to " << + url.c_str() << + ", error: " << + curl_easy_strerror(cc)); - if (formpost != nullptr) - { - curl_formfree(formpost); - } if (headerlist != nullptr) { curl_slist_free_all(headerlist); |