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,
|
||||
std::string request_type, const char *postData,
|
||||
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;
|
||||
char error_in[CURL_ERROR_SIZE];
|
||||
|
@ -196,6 +197,11 @@ bool GetRemoteFile(const char *url, std::string &str, std::string &error,
|
|||
}
|
||||
}
|
||||
if (postData) {
|
||||
if (postDataSize > 0) {
|
||||
curl_easy_setopt(curl.get(),
|
||||
CURLOPT_POSTFIELDSIZE,
|
||||
(long)postDataSize);
|
||||
}
|
||||
curl_easy_setopt(curl.get(), CURLOPT_POSTFIELDS,
|
||||
postData);
|
||||
}
|
||||
|
|
|
@ -69,4 +69,4 @@ bool GetRemoteFile(
|
|||
std::string request_type = "", const char *postData = nullptr,
|
||||
std::vector<std::string> extraHeaders = std::vector<std::string>(),
|
||||
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