if (opt < CURLOPTTYPE_OBJECTPOINT)
return (curl_easy_setopt(m_handle, opt, strtol(value, NULL, 10)) == CURLE_OK);
#ifdef CURLOPTTYPE_OFF_T
- else if (opt < CURLOPTTYPE_OFF_T)
- return (curl_easy_setopt(m_handle, opt, value) == CURLE_OK);
+ else if (opt < CURLOPTTYPE_OFF_T) {
+ if (value)
+ m_saved_options.push_back(value);
+ return (curl_easy_setopt(m_handle, opt, value ? m_saved_options.back().c_str() : NULL) == CURLE_OK);
+ }
# ifdef HAVE_CURL_OFF_T
else if (sizeof(curl_off_t) == sizeof(long))
return (curl_easy_setopt(m_handle, opt, strtol(value, NULL, 10)) == CURLE_OK);
# endif
return false;
#else
- else
- return (curl_easy_setopt(m_handle, opt, value) == CURLE_OK);
+ else {
+ if (value)
+ m_saved_options.push_back(value);
+ return (curl_easy_setopt(m_handle, opt, value ? m_saved_options.back().c_str() : NULL) == CURLE_OK);
+ }
#endif
}
stringstream m_stream;
struct curl_slist* m_headers;
map<string,vector<string> > m_response_headers;
+ vector<string> m_saved_options;
#ifndef XMLTOOLING_NO_XMLSEC
const OpenSSLCredential* m_cred;
const OpenSSLTrustEngine* m_trustEngine;
if (opt < CURLOPTTYPE_OBJECTPOINT)
success = (curl_easy_setopt(fEasy, opt, strtol(value.get(), NULL, 10)) == CURLE_OK);
#ifdef CURLOPTTYPE_OFF_T
- else if (opt < CURLOPTTYPE_OFF_T)
- success = (curl_easy_setopt(fEasy, opt, value.get()) == CURLE_OK);
+ else if (opt < CURLOPTTYPE_OFF_T) {
+ fSavedOptions.push_back(value.get());
+ success = (curl_easy_setopt(fEasy, opt, fSavedOptions.back().c_str()) == CURLE_OK);
+ }
# ifdef HAVE_CURL_OFF_T
else if (sizeof(curl_off_t) == sizeof(long))
success = (curl_easy_setopt(fEasy, opt, strtol(value.get(), NULL, 10)) == CURLE_OK);
else
success = false;
#else
- else
- success = (curl_easy_setopt(fEasy, opt, value.get()) == CURLE_OK);
+ else {
+ fSavedOptions.push_back(value.get());
+ success = (curl_easy_setopt(fEasy, opt, fSavedOptions.back().c_str()) == CURLE_OK);
+ }
#endif
if (!success)
fLog.error("failed to set transport option (%s)", option.get());