Issue 221 - HTTPUpload::SendRequest should provide error code or error description to callers. r=Liu Li

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@228 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
ted.mielczarek 2007-11-02 12:22:35 +00:00
parent 8eb7111814
commit feff0b300f
2 changed files with 10 additions and 2 deletions

View File

@ -61,12 +61,15 @@ bool HTTPUpload::SendRequest(const string &url,
const string &file_part_name, const string &file_part_name,
const string &proxy, const string &proxy,
const string &proxy_user_pwd, const string &proxy_user_pwd,
string *response_body) { string *response_body,
string *error_description) {
if (!CheckParameters(parameters)) if (!CheckParameters(parameters))
return false; return false;
CURL *curl = curl_easy_init(); CURL *curl = curl_easy_init();
CURLcode err_code = CURLE_OK; CURLcode err_code = CURLE_OK;
if (error_description != NULL)
*error_description = "No Error";
if (curl) { if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
@ -114,6 +117,8 @@ bool HTTPUpload::SendRequest(const string &url,
url.c_str(), url.c_str(),
curl_easy_strerror(err_code)); curl_easy_strerror(err_code));
#endif #endif
if (error_description != NULL)
*error_description = curl_easy_strerror(err_code);
if (curl != NULL) if (curl != NULL)
curl_easy_cleanup(curl); curl_easy_cleanup(curl);

View File

@ -53,13 +53,16 @@ class HTTPUpload {
// Only HTTP(S) URLs are currently supported. Returns true on success. // Only HTTP(S) URLs are currently supported. Returns true on success.
// If the request is successful and response_body is non-NULL, // If the request is successful and response_body is non-NULL,
// the response body will be returned in response_body. // the response body will be returned in response_body.
// If the send fails, a description of the error will be
// returned in error_description.
static bool SendRequest(const string &url, static bool SendRequest(const string &url,
const map<string, string> &parameters, const map<string, string> &parameters,
const string &upload_file, const string &upload_file,
const string &file_part_name, const string &file_part_name,
const string &proxy, const string &proxy,
const string &proxy_user_pwd, const string &proxy_user_pwd,
string *response_body); string *response_body,
string *error_description);
private: private:
// Checks that the given list of parameters has only printable // Checks that the given list of parameters has only printable