diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/common/linux/http_upload.cc | 9 | ||||
-rw-r--r-- | src/common/linux/http_upload.h | 3 | ||||
-rw-r--r-- | src/tools/linux/symupload/minidump_upload.cc | 1 | ||||
-rw-r--r-- | src/tools/linux/symupload/sym_upload.cc | 14 |
4 files changed, 24 insertions, 3 deletions
diff --git a/src/common/linux/http_upload.cc b/src/common/linux/http_upload.cc index 857dc141..f69237c8 100644 --- a/src/common/linux/http_upload.cc +++ b/src/common/linux/http_upload.cc @@ -62,7 +62,11 @@ bool HTTPUpload::SendRequest(const string &url, const string &proxy_user_pwd, const string &ca_certificate_file, string *response_body, + long *response_code, string *error_description) { + if (response_code != NULL) + *response_code = 0; + if (!CheckParameters(parameters)) return false; @@ -149,6 +153,11 @@ bool HTTPUpload::SendRequest(const string &url, CURLcode (*curl_easy_perform)(CURL *); *(void**) (&curl_easy_perform) = dlsym(curl_lib, "curl_easy_perform"); err_code = (*curl_easy_perform)(curl); + if (response_code != NULL) { + CURLcode (*curl_easy_getinfo)(CURL *, CURLINFO, ...); + *(void**) (&curl_easy_getinfo) = dlsym(curl_lib, "curl_easy_getinfo"); + (*curl_easy_getinfo)(curl, CURLINFO_RESPONSE_CODE, response_code); + } const char* (*curl_easy_strerror)(CURLcode); *(void**) (&curl_easy_strerror) = dlsym(curl_lib, "curl_easy_strerror"); #ifndef NDEBUG diff --git a/src/common/linux/http_upload.h b/src/common/linux/http_upload.h index e98b25de..22b62960 100644 --- a/src/common/linux/http_upload.h +++ b/src/common/linux/http_upload.h @@ -53,6 +53,8 @@ class HTTPUpload { // Only HTTP(S) URLs are currently supported. Returns true on success. // If the request is successful and response_body is non-NULL, // the response body will be returned in response_body. + // If response_code is non-NULL, it will be set to the HTTP response code + // received (or 0 if the request failed before getting an HTTP response). // If the send fails, a description of the error will be // returned in error_description. static bool SendRequest(const string &url, @@ -63,6 +65,7 @@ class HTTPUpload { const string &proxy_user_pwd, const string &ca_certificate_file, string *response_body, + long *response_code, string *error_description); private: diff --git a/src/tools/linux/symupload/minidump_upload.cc b/src/tools/linux/symupload/minidump_upload.cc index 6f1748ad..144c8bf6 100644 --- a/src/tools/linux/symupload/minidump_upload.cc +++ b/src/tools/linux/symupload/minidump_upload.cc @@ -71,6 +71,7 @@ static void Start(Options *options) { options->proxy_user_pwd, "", &response, + NULL, &error); if (success) { diff --git a/src/tools/linux/symupload/sym_upload.cc b/src/tools/linux/symupload/sym_upload.cc index a4d5be79..f5324a45 100644 --- a/src/tools/linux/symupload/sym_upload.cc +++ b/src/tools/linux/symupload/sym_upload.cc @@ -139,6 +139,7 @@ static void Start(Options *options) { parameters["code_file"] = module_parts[4]; parameters["debug_identifier"] = compacted_id; std::string response, error; + long response_code; bool success = HTTPUpload::SendRequest(options->uploadURLStr, parameters, options->symbolsPath, @@ -147,14 +148,21 @@ static void Start(Options *options) { options->proxy_user_pwd, "", &response, + &response_code, &error); - if (success) { - printf("Successfully sent the symbol file.\n"); - } else { + if (!success) { printf("Failed to send symbol file: %s\n", error.c_str()); printf("Response:\n"); printf("%s\n", response.c_str()); + } else if (response_code == 0) { + printf("Failed to send symbol file: No response code\n"); + } else if (response_code != 200) { + printf("Failed to send symbol file: Response code %ld\n", response_code); + printf("Response:\n"); + printf("%s\n", response.c_str()); + } else { + printf("Successfully sent the symbol file.\n"); } options->success = success; } |