UI: Add postDataSize option to GetRemoteText
In order to be able to POST binary data that may contain NULL-bytes we must manually specify the size of the array, otherwise cURL will fall back to `strlen()`.master
parent
5c9aa83e05
commit
2dd8049aef
|
@ -123,7 +123,8 @@ bool GetRemoteFile(const char *url, std::string &str, std::string &error,
|
||||||
long *responseCode, const char *contentType,
|
long *responseCode, const char *contentType,
|
||||||
std::string request_type, const char *postData,
|
std::string request_type, const char *postData,
|
||||||
std::vector<std::string> extraHeaders,
|
std::vector<std::string> extraHeaders,
|
||||||
std::string *signature, int timeoutSec, bool fail_on_error)
|
std::string *signature, int timeoutSec, bool fail_on_error,
|
||||||
|
int postDataSize)
|
||||||
{
|
{
|
||||||
vector<string> header_in_list;
|
vector<string> header_in_list;
|
||||||
char error_in[CURL_ERROR_SIZE];
|
char error_in[CURL_ERROR_SIZE];
|
||||||
|
@ -196,6 +197,11 @@ bool GetRemoteFile(const char *url, std::string &str, std::string &error,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (postData) {
|
if (postData) {
|
||||||
|
if (postDataSize > 0) {
|
||||||
|
curl_easy_setopt(curl.get(),
|
||||||
|
CURLOPT_POSTFIELDSIZE,
|
||||||
|
(long)postDataSize);
|
||||||
|
}
|
||||||
curl_easy_setopt(curl.get(), CURLOPT_POSTFIELDS,
|
curl_easy_setopt(curl.get(), CURLOPT_POSTFIELDS,
|
||||||
postData);
|
postData);
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,4 +69,4 @@ bool GetRemoteFile(
|
||||||
std::string request_type = "", const char *postData = nullptr,
|
std::string request_type = "", const char *postData = nullptr,
|
||||||
std::vector<std::string> extraHeaders = std::vector<std::string>(),
|
std::vector<std::string> extraHeaders = std::vector<std::string>(),
|
||||||
std::string *signature = nullptr, int timeoutSec = 0,
|
std::string *signature = nullptr, int timeoutSec = 0,
|
||||||
bool fail_on_error = true);
|
bool fail_on_error = true, int postDataSize = 0);
|
||||||
|
|
Loading…
Reference in New Issue