From d6b6959e0eee58899d1a35a8a98d5d3eb8275be2 Mon Sep 17 00:00:00 2001 From: "mkrebs@chromium.org" Date: Thu, 24 May 2012 20:22:48 +0000 Subject: sym_upload: Show failure if symbol server gives redirect response Add a "response_code" parameter to Linux's HTTPUpload::SendRequest() that, if non-NULL, will be set to the response code of the HTTP request. Using that, sym_upload will print a failure message on Linux if the response code is not 200. This is in line with the change made by http://breakpad.appspot.com/77001/ for the Mac version. BUG=google-breakpad:480, chromium-os:30032 TEST=Ran "sym_upload powertop.sym http://test.webdav.org/redir-tmp/" Ran "sym_upload powertop.sym http://clients2.google.com/cr/staging_symbol" Review URL: https://breakpad.appspot.com/388002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@968 4c0a9323-5329-0410-9bdc-e9ce6186880e --- src/common/linux/http_upload.cc | 9 +++++++++ src/common/linux/http_upload.h | 3 +++ 2 files changed, 12 insertions(+) (limited to 'src/common/linux') 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: -- cgit v1.2.1