mirror of
https://github.com/yuzu-emu/breakpad.git
synced 2025-01-05 14:05:53 +00:00
Migrate google_converter to v2 upload API.
Change-Id: If045809cfa3a3601b93725b6b2b45089e7558eb3 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3657059 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
This commit is contained in:
parent
c34fc86972
commit
bee636cea4
|
@ -39,12 +39,13 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include "common/windows/http_upload.h"
|
||||||
|
#include "common/windows/string_utils-inl.h"
|
||||||
|
#include "common/windows/sym_upload_v2_protocol.h"
|
||||||
|
#include "tools/windows/converter/ms_symbol_server_converter.h"
|
||||||
#include "tools/windows/converter_exe/escaping.h"
|
#include "tools/windows/converter_exe/escaping.h"
|
||||||
#include "tools/windows/converter_exe/http_download.h"
|
#include "tools/windows/converter_exe/http_download.h"
|
||||||
#include "tools/windows/converter_exe/tokenizer.h"
|
#include "tools/windows/converter_exe/tokenizer.h"
|
||||||
#include "common/windows/http_upload.h"
|
|
||||||
#include "common/windows/string_utils-inl.h"
|
|
||||||
#include "tools/windows/converter/ms_symbol_server_converter.h"
|
|
||||||
|
|
||||||
using strings::WebSafeBase64Unescape;
|
using strings::WebSafeBase64Unescape;
|
||||||
using strings::WebSafeBase64Escape;
|
using strings::WebSafeBase64Escape;
|
||||||
|
@ -208,28 +209,37 @@ static bool MissingSymbolInfoToParameters(const MissingSymbolInfo& missing_info,
|
||||||
// to the symbol server rooted at |upload_symbol_url|. Returns true on
|
// to the symbol server rooted at |upload_symbol_url|. Returns true on
|
||||||
// success and false on failure, printing an error message.
|
// success and false on failure, printing an error message.
|
||||||
static bool UploadSymbolFile(const wstring& upload_symbol_url,
|
static bool UploadSymbolFile(const wstring& upload_symbol_url,
|
||||||
|
const wstring& api_key,
|
||||||
const MissingSymbolInfo& missing_info,
|
const MissingSymbolInfo& missing_info,
|
||||||
const string& converted_file) {
|
const string& converted_file) {
|
||||||
map<wstring, wstring> parameters;
|
wstring debug_file_w;
|
||||||
if (!MissingSymbolInfoToParameters(missing_info,& parameters)) {
|
if (!WindowsStringUtils::safe_mbstowcs(missing_info.debug_file,
|
||||||
// MissingSymbolInfoToParameters or a callee will have printed an error.
|
&debug_file_w)) {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
wstring converted_file_w;
|
|
||||||
|
|
||||||
if (!WindowsStringUtils::safe_mbstowcs(converted_file,& converted_file_w)) {
|
|
||||||
FprintfFlush(stderr, "UploadSymbolFile: safe_mbstowcs failed for %s\n",
|
FprintfFlush(stderr, "UploadSymbolFile: safe_mbstowcs failed for %s\n",
|
||||||
converted_file.c_str());
|
converted_file.c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
map<wstring, wstring> files;
|
|
||||||
files[L"symbol_file"] = converted_file_w;
|
|
||||||
|
|
||||||
|
wstring debug_id_w;
|
||||||
|
if (!WindowsStringUtils::safe_mbstowcs(missing_info.debug_identifier,
|
||||||
|
&debug_id_w)) {
|
||||||
|
FprintfFlush(stderr, "UploadSymbolFile: safe_mbstowcs failed for %s\n",
|
||||||
|
converted_file.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
wstring converted_file_w;
|
||||||
|
if (!WindowsStringUtils::safe_mbstowcs(converted_file, &converted_file_w)) {
|
||||||
|
FprintfFlush(stderr, "UploadSymbolFile: safe_mbstowcs failed for %s\n",
|
||||||
|
converted_file.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int timeout_ms = 60 * 1000;
|
||||||
FprintfFlush(stderr, "Uploading %s\n", converted_file.c_str());
|
FprintfFlush(stderr, "Uploading %s\n", converted_file.c_str());
|
||||||
if (!HTTPUpload::SendMultipartPostRequest(
|
if (!google_breakpad::SymUploadV2ProtocolSend(
|
||||||
upload_symbol_url, parameters,
|
upload_symbol_url.c_str(), api_key.c_str(), &timeout_ms, debug_file_w,
|
||||||
files, NULL, NULL, NULL)) {
|
debug_id_w, converted_file_w, true)) {
|
||||||
FprintfFlush(stderr, "UploadSymbolFile: HTTPUpload::SendRequest failed "
|
FprintfFlush(stderr, "UploadSymbolFile: HTTPUpload::SendRequest failed "
|
||||||
"for %s %s %s\n",
|
"for %s %s %s\n",
|
||||||
missing_info.debug_file.c_str(),
|
missing_info.debug_file.c_str(),
|
||||||
|
@ -319,6 +329,9 @@ struct ConverterOptions {
|
||||||
// URL for uploading symbols.
|
// URL for uploading symbols.
|
||||||
wstring upload_symbols_url;
|
wstring upload_symbols_url;
|
||||||
|
|
||||||
|
// API key to use when uploading symbols.
|
||||||
|
wstring api_key;
|
||||||
|
|
||||||
// URL to fetch list of missing symbols.
|
// URL to fetch list of missing symbols.
|
||||||
wstring missing_symbols_url;
|
wstring missing_symbols_url;
|
||||||
|
|
||||||
|
@ -413,8 +426,8 @@ static void ConvertMissingSymbolFile(const MissingSymbolInfo& missing_info,
|
||||||
// If it fails, something will print an error message indicating
|
// If it fails, something will print an error message indicating
|
||||||
// the cause of the failure, and the item will remain on the
|
// the cause of the failure, and the item will remain on the
|
||||||
// missing symbol list.
|
// missing symbol list.
|
||||||
UploadSymbolFile(options.upload_symbols_url, missing_info,
|
UploadSymbolFile(options.upload_symbols_url, options.api_key,
|
||||||
converted_file);
|
missing_info, converted_file);
|
||||||
remove(converted_file.c_str());
|
remove(converted_file.c_str());
|
||||||
|
|
||||||
// Note: this does leave some directories behind that could be
|
// Note: this does leave some directories behind that could be
|
||||||
|
@ -495,8 +508,8 @@ static void ConvertMissingSymbolFile(const MissingSymbolInfo& missing_info,
|
||||||
// If it fails, something will print an error message indicating
|
// If it fails, something will print an error message indicating
|
||||||
// the cause of the failure, and the item will remain on the
|
// the cause of the failure, and the item will remain on the
|
||||||
// missing symbol list.
|
// missing symbol list.
|
||||||
UploadSymbolFile(options.upload_symbols_url, missing_info,
|
UploadSymbolFile(options.upload_symbols_url, options.api_key,
|
||||||
converted_file);
|
missing_info, converted_file);
|
||||||
remove(converted_file.c_str());
|
remove(converted_file.c_str());
|
||||||
|
|
||||||
// Note: this does leave some directories behind that could be
|
// Note: this does leave some directories behind that could be
|
||||||
|
@ -648,12 +661,14 @@ static bool ConvertMissingSymbolsList(const ConverterOptions& options) {
|
||||||
// usage prints the usage message. It returns 1 as a convenience, to be used
|
// usage prints the usage message. It returns 1 as a convenience, to be used
|
||||||
// as a return value from main.
|
// as a return value from main.
|
||||||
static int usage(const char* program_name) {
|
static int usage(const char* program_name) {
|
||||||
FprintfFlush(stderr,
|
FprintfFlush(
|
||||||
|
stderr,
|
||||||
"usage: %s [options]\n"
|
"usage: %s [options]\n"
|
||||||
" -f <full_msss_server> MS servers to ask for all symbols\n"
|
" -f <full_msss_server> MS servers to ask for all symbols\n"
|
||||||
" -n <no_exe_msss_server> same, but prevent asking for EXEs\n"
|
" -n <no_exe_msss_server> same, but prevent asking for EXEs\n"
|
||||||
" -l <local_cache_path> Temporary local storage for symbols\n"
|
" -l <local_cache_path> Temporary local storage for symbols\n"
|
||||||
" -s <upload_url> URL for uploading symbols\n"
|
" -s <upload_url> URL for uploading symbols\n"
|
||||||
|
" -k <api_key> API key to use when uploading symbols\n"
|
||||||
" -m <missing_symbols_url> URL to fetch list of missing symbols\n"
|
" -m <missing_symbols_url> URL to fetch list of missing symbols\n"
|
||||||
" -mf <missing_symbols_file> File containing the list of missing\n"
|
" -mf <missing_symbols_file> File containing the list of missing\n"
|
||||||
" symbols. Fetch failures are not\n"
|
" symbols. Fetch failures are not\n"
|
||||||
|
@ -729,6 +744,12 @@ int main(int argc, char** argv) {
|
||||||
value.c_str());
|
value.c_str());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
} else if (option == "-k") {
|
||||||
|
if (!WindowsStringUtils::safe_mbstowcs(value, &options.api_key)) {
|
||||||
|
FprintfFlush(stderr, "main: safe_mbstowcs failed for %s\n",
|
||||||
|
value.c_str());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
} else if (option == "-m") {
|
} else if (option == "-m") {
|
||||||
if (!WindowsStringUtils::safe_mbstowcs(value,
|
if (!WindowsStringUtils::safe_mbstowcs(value,
|
||||||
& options.missing_symbols_url)) {
|
& options.missing_symbols_url)) {
|
||||||
|
@ -780,6 +801,10 @@ int main(int argc, char** argv) {
|
||||||
FprintfFlush(stderr, "No upload symbols URL specified.\n");
|
FprintfFlush(stderr, "No upload symbols URL specified.\n");
|
||||||
return usage(argv[0]);
|
return usage(argv[0]);
|
||||||
}
|
}
|
||||||
|
if (options.api_key.empty()) {
|
||||||
|
FprintfFlush(stderr, "No API key specified.\n");
|
||||||
|
return usage(argv[0]);
|
||||||
|
}
|
||||||
if (options.missing_symbols_url.empty() &&
|
if (options.missing_symbols_url.empty() &&
|
||||||
options.missing_symbols_file.empty()) {
|
options.missing_symbols_file.empty()) {
|
||||||
FprintfFlush(stderr, "No missing symbols URL or file specified.\n");
|
FprintfFlush(stderr, "No missing symbols URL or file specified.\n");
|
||||||
|
|
Loading…
Reference in a new issue