mirror of
https://github.com/chromium/crashpad.git
synced 2025-03-10 06:36:02 +00:00
Use BUILDFLAG(IS_*) instead of defined(OS_*). This was generated mostly mechnically by performing the following steps: - sed -i '' -E -e 's/defined\(OS_/BUILDFLAG(IS_/g' \ -e 's%([ !])OS_([A-Z]+)%\1BUILDFLAG(IS_\2)%g' \ $(git grep -l 'OS_' '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm') - sed -i '' -e 's/#ifdef BUILDFLAG(/#if BUILDFLAG(/' \ $(git grep -l '#ifdef BUILDFLAG(' '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm') - gsed -i -z -E -e \ 's%(.*)#include "%\1#include "build/buildflag.h"\n#include "%' \ $(git grep -l 'BUILDFLAG(IS_' '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm') - Spot checks to move #include "build/buildflag.h" to the correct parts of files. - sed -i '' -E -e \ 's%^(#include "build/buildflag.h")$%#include "build/build_config.h"\n\1%' \ $(grep -L '^#include "build/build_config.h"$' $(git grep -l 'BUILDFLAG(IS_' '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm')) - Add “clang-format off” around tool usage messages. - git cl format - Update mini_chromium to 85ba51f98278 (intermediate step). TESTING ONLY). - for f in $(git grep -l '^#include "build/buildflag.h"$' '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm'); do \ grep -v '^#include "build/buildflag.h"$' "${f}" > /tmp/z; \ cp /tmp/z "${f}"; done - git cl format - Update mini_chromium to 735143774c5f (intermediate step). - Update mini_chromium to f41420eb45fa (as checked in). - Update mini_chromium to 6e2f204b4ae1 (as checked in). For ease of review and inspection, each of these steps is uploaded as a new patch set in a review series. This includes an update of mini_chromium to 6e2f204b4ae1: f41420eb45fa Use BUILDFLAG for OS checking 6e2f204b4ae1 Include what you use: string_util.h uses build_config.h Bug: chromium:1234043 Change-Id: Ieef86186f094c64e59b853729737e36982f8cf69 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3400258 Reviewed-by: Joshua Peraza <jperaza@chromium.org> Commit-Queue: Mark Mentovai <mark@chromium.org>
135 lines
4.2 KiB
C++
135 lines
4.2 KiB
C++
// Copyright 2018 The Crashpad Authors. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// A one-shot testing webserver.
|
|
//
|
|
// When invoked, this server will write a short integer to stdout, indicating on
|
|
// which port the server is listening. It will then read one integer from stdin,
|
|
// indicating the response code to be sent in response to a request. It also
|
|
// reads 16 characters from stdin, which, after having "\r\n" appended, will
|
|
// form the response body in a successful response (one with code 200). The
|
|
// server will process one HTTP request, deliver the prearranged response to the
|
|
// client, and write the entire request to stdout. It will then terminate.
|
|
|
|
#include "base/logging.h"
|
|
#include "base/numerics/safe_conversions.h"
|
|
#include "base/strings/stringprintf.h"
|
|
#include "build/build_config.h"
|
|
#include "tools/tool_support.h"
|
|
#include "util/file/file_io.h"
|
|
|
|
#if COMPILER_MSVC
|
|
#pragma warning(push)
|
|
#pragma warning(disable: 4244 4245 4267 4702)
|
|
#endif
|
|
|
|
#if defined(CRASHPAD_USE_BORINGSSL)
|
|
#define CPPHTTPLIB_OPENSSL_SUPPORT
|
|
#endif
|
|
|
|
#define CPPHTTPLIB_ZLIB_SUPPORT
|
|
#include "third_party/cpp-httplib/cpp-httplib/httplib.h"
|
|
|
|
#if COMPILER_MSVC
|
|
#pragma warning(pop)
|
|
#endif
|
|
|
|
namespace crashpad {
|
|
namespace {
|
|
|
|
int HttpTransportTestServerMain(int argc, char* argv[]) {
|
|
std::unique_ptr<httplib::Server> server;
|
|
if (argc == 1) {
|
|
server.reset(new httplib::Server);
|
|
#if defined(CRASHPAD_USE_BORINGSSL)
|
|
} else if (argc == 3) {
|
|
server.reset(new httplib::SSLServer(argv[1], argv[2]));
|
|
#endif
|
|
} else {
|
|
LOG(ERROR) << "usage: http_transport_test_server [cert.pem key.pem]";
|
|
return 1;
|
|
}
|
|
|
|
|
|
if (!server->is_valid()) {
|
|
LOG(ERROR) << "server creation failed";
|
|
return 1;
|
|
}
|
|
|
|
server->set_keep_alive_max_count(1);
|
|
|
|
uint16_t response_code;
|
|
char response[16];
|
|
|
|
std::string to_stdout;
|
|
|
|
server->Post("/upload",
|
|
[&response, &response_code, &server, &to_stdout](
|
|
const httplib::Request& req, httplib::Response& res) {
|
|
res.status = response_code;
|
|
if (response_code == 200) {
|
|
res.set_content(std::string(response, 16) + "\r\n",
|
|
"text/plain");
|
|
} else {
|
|
res.set_content("error", "text/plain");
|
|
}
|
|
|
|
to_stdout += "POST /upload HTTP/1.0\r\n";
|
|
for (const auto& h : req.headers) {
|
|
to_stdout += base::StringPrintf(
|
|
"%s: %s\r\n", h.first.c_str(), h.second.c_str());
|
|
}
|
|
to_stdout += "\r\n";
|
|
to_stdout += req.body;
|
|
|
|
server->stop();
|
|
});
|
|
|
|
uint16_t port =
|
|
base::checked_cast<uint16_t>(server->bind_to_any_port("localhost"));
|
|
|
|
CheckedWriteFile(
|
|
StdioFileHandle(StdioStream::kStandardOutput), &port, sizeof(port));
|
|
|
|
CheckedReadFileExactly(StdioFileHandle(StdioStream::kStandardInput),
|
|
&response_code,
|
|
sizeof(response_code));
|
|
|
|
CheckedReadFileExactly(StdioFileHandle(StdioStream::kStandardInput),
|
|
&response,
|
|
sizeof(response));
|
|
|
|
server->listen_after_bind();
|
|
|
|
LoggingWriteFile(StdioFileHandle(StdioStream::kStandardOutput),
|
|
to_stdout.data(),
|
|
to_stdout.size());
|
|
|
|
return 0;
|
|
}
|
|
|
|
} // namespace
|
|
} // namespace crashpad
|
|
|
|
#if BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
|
|
int main(int argc, char* argv[]) {
|
|
return crashpad::HttpTransportTestServerMain(argc, argv);
|
|
}
|
|
#elif BUILDFLAG(IS_WIN)
|
|
int wmain(int argc, wchar_t* argv[]) {
|
|
return crashpad::ToolSupport::Wmain(
|
|
argc, argv, crashpad::HttpTransportTestServerMain);
|
|
}
|
|
#endif // BUILDFLAG(IS_POSIX)
|