Make QUICHE command-line flags use a different function to get value than the regular feature flags.
This makes command-line flags possible to work in Envoy.
PiperOrigin-RevId: 450746605
diff --git a/quiche/balsa/balsa_frame_test.cc b/quiche/balsa/balsa_frame_test.cc
index ecf7454..1ce4c7b 100644
--- a/quiche/balsa/balsa_frame_test.cc
+++ b/quiche/balsa/balsa_frame_test.cc
@@ -2251,7 +2251,7 @@
TEST(HTTPBalsaFrame,
VisitorInvokedProperlyForResponseWithTransferEncodingAndTrailersRandom) {
TestSeed seed;
- seed.Initialize(GetQuicheFlag(FLAGS_randseed));
+ seed.Initialize(GetQuicheCommandLineFlag(FLAGS_randseed));
RandomEngine rng;
rng.seed(seed.GetSeed());
for (int i = 0; i < 1000; ++i) {
@@ -3172,7 +3172,7 @@
std::map<std::string, std::string>::const_iterator iter;
std::string trailer_data;
TestSeed seed;
- seed.Initialize(GetQuicheFlag(FLAGS_randseed));
+ seed.Initialize(GetQuicheCommandLineFlag(FLAGS_randseed));
RandomEngine rng;
rng.seed(seed.GetSeed());
FakeHeaders fake_headers_in_trailer;
diff --git a/quiche/common/platform/api/quiche_command_line_flags.h b/quiche/common/platform/api/quiche_command_line_flags.h
index 783dea6..57caeb3 100644
--- a/quiche/common/platform/api/quiche_command_line_flags.h
+++ b/quiche/common/platform/api/quiche_command_line_flags.h
@@ -11,12 +11,17 @@
#include "quiche_platform_impl/quiche_command_line_flags_impl.h"
// Define a command-line flag that can be automatically set via
-// QuicheParseCommandLineFlags().
+// QuicheParseCommandLineFlags(). The macro has to be called in the .cc file of
+// a unit test or the CLI tool reading the flag.
#define DEFINE_QUICHE_COMMAND_LINE_FLAG(type, name, default_value, help) \
DEFINE_QUICHE_COMMAND_LINE_FLAG_IMPL(type, name, default_value, help)
namespace quiche {
+// The impl header must provide GetQuicheCommandLineFlag(), which takes
+// PlatformSpecificFlag<T> variable defined by the macro above, and returns the
+// flag value of type T.
+
// Parses command-line flags, setting flag variables defined using
// DEFINE_QUICHE_COMMAND_LINE_FLAG if they appear in the command line, and
// returning a list of any non-flag arguments specified in the command line. If
diff --git a/quiche/common/platform/api/quiche_flags.h b/quiche/common/platform/api/quiche_flags.h
index e039b1f..26a933c 100644
--- a/quiche/common/platform/api/quiche_flags.h
+++ b/quiche/common/platform/api/quiche_flags.h
@@ -8,6 +8,9 @@
#include "quiche_platform_impl/quic_flags_impl.h"
#include "quiche_platform_impl/quiche_flags_impl.h"
+// Flags accessed via GetQuicheReloadableFlag/GetQuicheRestartFlag are temporary
+// boolean flags that are used to enable or disable code behavior changes. The
+// current list is available in the quiche/quic/core/quic_flags_list.h file.
#define GetQuicheReloadableFlag(module, flag) \
GetQuicheReloadableFlagImpl(module, flag)
#define SetQuicheReloadableFlag(module, flag, value) \
@@ -16,6 +19,10 @@
GetQuicheRestartFlagImpl(module, flag)
#define SetQuicheRestartFlag(module, flag, value) \
SetQuicheRestartFlagImpl(module, flag, value)
+
+// Flags accessed via GetQuicheFlag are permanent flags used to control QUICHE
+// library behavior. The current list is available in the
+// quiche/quic/core/quic_protocol_flags_list.h file.
#define GetQuicheFlag(flag) GetQuicheFlagImpl(flag)
#define SetQuicheFlag(flag, value) SetQuicheFlagImpl(flag, value)
diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.h b/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.h
index e0ccf17..d9f7bac 100644
--- a/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.h
+++ b/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.h
@@ -12,6 +12,11 @@
namespace quiche {
+template <typename T>
+T GetQuicheCommandLineFlag(const absl::Flag<T>& flag) {
+ return absl::GetFlag(flag);
+}
+
std::vector<std::string> QuicheParseCommandLineFlagsImpl(
const char* usage, int argc, const char* const* argv,
bool parse_only = false);
diff --git a/quiche/quic/core/congestion_control/bbr2_simulator_test.cc b/quiche/quic/core/congestion_control/bbr2_simulator_test.cc
index 6a0e581..fdf036b 100644
--- a/quiche/quic/core/congestion_control/bbr2_simulator_test.cc
+++ b/quiche/quic/core/congestion_control/bbr2_simulator_test.cc
@@ -127,7 +127,8 @@
}
void SetUp() override {
- if (GetQuicFlag(FLAGS_quic_bbr2_test_regression_mode) == "regress") {
+ if (quiche::GetQuicheCommandLineFlag(
+ FLAGS_quic_bbr2_test_regression_mode) == "regress") {
SendAlgorithmTestResult expected;
ASSERT_TRUE(LoadSendAlgorithmTestResult(&expected));
random_seed_ = expected.random_seed();
@@ -140,7 +141,7 @@
~Bbr2SimulatorTest() override {
const std::string regression_mode =
- GetQuicFlag(FLAGS_quic_bbr2_test_regression_mode);
+ quiche::GetQuicheCommandLineFlag(FLAGS_quic_bbr2_test_regression_mode);
const QuicTime::Delta simulated_duration =
SimulatedNow() - QuicTime::Zero();
if (regression_mode == "record") {
diff --git a/quiche/quic/core/congestion_control/bbr_sender_test.cc b/quiche/quic/core/congestion_control/bbr_sender_test.cc
index 199d322..bbdbee6 100644
--- a/quiche/quic/core/congestion_control/bbr_sender_test.cc
+++ b/quiche/quic/core/congestion_control/bbr_sender_test.cc
@@ -108,7 +108,8 @@
}
void SetUp() override {
- if (GetQuicFlag(FLAGS_quic_bbr_test_regression_mode) == "regress") {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_quic_bbr_test_regression_mode) ==
+ "regress") {
SendAlgorithmTestResult expected;
ASSERT_TRUE(LoadSendAlgorithmTestResult(&expected));
random_seed_ = expected.random_seed();
@@ -121,7 +122,7 @@
~BbrSenderTest() {
const std::string regression_mode =
- GetQuicFlag(FLAGS_quic_bbr_test_regression_mode);
+ quiche::GetQuicheCommandLineFlag(FLAGS_quic_bbr_test_regression_mode);
const QuicTime::Delta simulated_duration = clock_->Now() - QuicTime::Zero();
if (regression_mode == "record") {
RecordSendAlgorithmTestResult(random_seed_,
diff --git a/quiche/quic/masque/masque_client_bin.cc b/quiche/quic/masque/masque_client_bin.cc
index 0868e7d..2d686df 100644
--- a/quiche/quic/masque/masque_client_bin.cc
+++ b/quiche/quic/masque/masque_client_bin.cc
@@ -54,7 +54,7 @@
}
const bool disable_certificate_verification =
- GetQuicFlag(FLAGS_disable_certificate_verification);
+ quiche::GetQuicheCommandLineFlag(FLAGS_disable_certificate_verification);
QuicEpollServer epoll_server;
std::string uri_template = urls[0];
@@ -84,7 +84,7 @@
proof_verifier = CreateDefaultProofVerifier(host);
}
MasqueMode masque_mode = MasqueMode::kOpen;
- std::string mode_string = GetQuicFlag(FLAGS_masque_mode);
+ std::string mode_string = quiche::GetQuicheCommandLineFlag(FLAGS_masque_mode);
if (!mode_string.empty() && mode_string != "open") {
std::cerr << "Invalid masque_mode \"" << mode_string << "\"" << std::endl;
return 1;
diff --git a/quiche/quic/masque/masque_server_bin.cc b/quiche/quic/masque/masque_server_bin.cc
index bae882f..23d9d69 100644
--- a/quiche/quic/masque/masque_server_bin.cc
+++ b/quiche/quic/masque/masque_server_bin.cc
@@ -46,21 +46,22 @@
}
quic::MasqueMode masque_mode = quic::MasqueMode::kOpen;
- std::string mode_string = GetQuicFlag(FLAGS_masque_mode);
+ std::string mode_string = quiche::GetQuicheCommandLineFlag(FLAGS_masque_mode);
if (!mode_string.empty() && mode_string != "open") {
std::cerr << "Invalid masque_mode \"" << mode_string << "\"" << std::endl;
return 1;
}
auto backend = std::make_unique<quic::MasqueServerBackend>(
- masque_mode, GetQuicFlag(FLAGS_server_authority),
- GetQuicFlag(FLAGS_cache_dir));
+ masque_mode, quiche::GetQuicheCommandLineFlag(FLAGS_server_authority),
+ quiche::GetQuicheCommandLineFlag(FLAGS_cache_dir));
auto server =
std::make_unique<quic::MasqueEpollServer>(masque_mode, backend.get());
if (!server->CreateUDPSocketAndListen(quic::QuicSocketAddress(
- quic::QuicIpAddress::Any6(), GetQuicFlag(FLAGS_port)))) {
+ quic::QuicIpAddress::Any6(),
+ quiche::GetQuicheCommandLineFlag(FLAGS_port)))) {
return 1;
}
diff --git a/quiche/quic/qbone/qbone_client_session.cc b/quiche/quic/qbone/qbone_client_session.cc
index 4c22d23..cfc6001 100644
--- a/quiche/quic/qbone/qbone_client_session.cc
+++ b/quiche/quic/qbone/qbone_client_session.cc
@@ -58,7 +58,8 @@
QboneSessionBase::Initialize();
static_cast<QuicCryptoClientStreamBase*>(GetMutableCryptoStream())
->CryptoConnect();
- if (!GetQuicFlag(FLAGS_qbone_client_defer_control_stream_creation)) {
+ if (!quiche::GetQuicheCommandLineFlag(
+ FLAGS_qbone_client_defer_control_stream_creation)) {
CreateControlStream();
}
}
@@ -66,7 +67,8 @@
void QboneClientSession::SetDefaultEncryptionLevel(
quic::EncryptionLevel level) {
QboneSessionBase::SetDefaultEncryptionLevel(level);
- if (GetQuicFlag(FLAGS_qbone_client_defer_control_stream_creation) &&
+ if (quiche::GetQuicheCommandLineFlag(
+ FLAGS_qbone_client_defer_control_stream_creation) &&
level == quic::ENCRYPTION_FORWARD_SECURE) {
CreateControlStream();
}
diff --git a/quiche/quic/qbone/qbone_server_session.cc b/quiche/quic/qbone/qbone_server_session.cc
index 6f189e7..c6d622f 100644
--- a/quiche/quic/qbone/qbone_server_session.cc
+++ b/quiche/quic/qbone/qbone_server_session.cc
@@ -79,7 +79,8 @@
void QboneServerSession::Initialize() {
QboneSessionBase::Initialize();
- if (!GetQuicFlag(FLAGS_qbone_server_defer_control_stream_creation)) {
+ if (!quiche::GetQuicheCommandLineFlag(
+ FLAGS_qbone_server_defer_control_stream_creation)) {
CreateControlStream();
}
}
@@ -87,7 +88,8 @@
void QboneServerSession::SetDefaultEncryptionLevel(
quic::EncryptionLevel level) {
QboneSessionBase::SetDefaultEncryptionLevel(level);
- if (GetQuicFlag(FLAGS_qbone_server_defer_control_stream_creation) &&
+ if (quiche::GetQuicheCommandLineFlag(
+ FLAGS_qbone_server_defer_control_stream_creation) &&
level == quic::ENCRYPTION_FORWARD_SECURE) {
CreateControlStream();
}
diff --git a/quiche/quic/qbone/qbone_session_base.cc b/quiche/quic/qbone/qbone_session_base.cc
index 3755bb5..36517b7 100644
--- a/quiche/quic/qbone/qbone_session_base.cc
+++ b/quiche/quic/qbone/qbone_session_base.cc
@@ -75,7 +75,7 @@
flow_controller()->AddBytesConsumed(frame.data_length);
// TODO(b/147817422): Add a counter for how many streams were actually
// closed here.
- if (GetQuicFlag(FLAGS_qbone_close_ephemeral_frames)) {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_qbone_close_ephemeral_frames)) {
ResetStream(frame.stream_id, QUIC_STREAM_CANCELLED);
}
return;
diff --git a/quiche/quic/qbone/qbone_stream.cc b/quiche/quic/qbone/qbone_stream.cc
index 3ee8634..6465d59 100644
--- a/quiche/quic/qbone/qbone_stream.cc
+++ b/quiche/quic/qbone/qbone_stream.cc
@@ -22,8 +22,8 @@
: QuicStream(id, session, /*is_static=*/false, WRITE_UNIDIRECTIONAL) {
// QBONE uses a LIFO queue to try to always make progress. An individual
// packet may persist for upto to qbone_stream_ttl_secs seconds in memory.
- MaybeSetTtl(
- QuicTime::Delta::FromSeconds(GetQuicFlag(FLAGS_qbone_stream_ttl_secs)));
+ MaybeSetTtl(QuicTime::Delta::FromSeconds(
+ quiche::GetQuicheCommandLineFlag(FLAGS_qbone_stream_ttl_secs)));
}
void QboneWriteOnlyStream::WritePacketToQuicStream(absl::string_view packet) {
@@ -39,8 +39,8 @@
session_(session) {
// QBONE uses a LIFO queue to try to always make progress. An individual
// packet may persist for upto to qbone_stream_ttl_secs seconds in memory.
- MaybeSetTtl(
- QuicTime::Delta::FromSeconds(GetQuicFlag(FLAGS_qbone_stream_ttl_secs)));
+ MaybeSetTtl(QuicTime::Delta::FromSeconds(
+ quiche::GetQuicheCommandLineFlag(FLAGS_qbone_stream_ttl_secs)));
}
void QboneReadOnlyStream::OnDataAvailable() {
diff --git a/quiche/quic/tools/quic_client_interop_test_bin.cc b/quiche/quic/tools/quic_client_interop_test_bin.cc
index 549be2e..9a29afe 100644
--- a/quiche/quic/tools/quic_client_interop_test_bin.cc
+++ b/quiche/quic/tools/quic_client_interop_test_bin.cc
@@ -395,9 +395,9 @@
quiche::QuichePrintCommandLineFlagHelp(usage);
exit(1);
}
- std::string dns_host = GetQuicFlag(FLAGS_host);
+ std::string dns_host = quiche::GetQuicheCommandLineFlag(FLAGS_host);
std::string url_host = "";
- int port = GetQuicFlag(FLAGS_port);
+ int port = quiche::GetQuicheCommandLineFlag(FLAGS_port);
if (!args.empty()) {
quic::QuicUrl url(args[0], "https");
@@ -423,7 +423,8 @@
// Pick QUIC version to use.
quic::QuicVersionInitializeSupportForIetfDraft();
quic::ParsedQuicVersion version = quic::UnsupportedQuicVersion();
- std::string quic_version_string = GetQuicFlag(FLAGS_quic_version);
+ std::string quic_version_string =
+ quiche::GetQuicheCommandLineFlag(FLAGS_quic_version);
if (!quic_version_string.empty()) {
version = quic::ParseQuicVersionString(quic_version_string);
} else {
diff --git a/quiche/quic/tools/quic_packet_printer_bin.cc b/quiche/quic/tools/quic_packet_printer_bin.cc
index 8867e44..740971c 100644
--- a/quiche/quic/tools/quic_packet_printer_bin.cc
+++ b/quiche/quic/tools/quic_packet_printer_bin.cc
@@ -271,8 +271,8 @@
quic::QuicTime start(quic::QuicTime::Zero());
quic::QuicFramer framer(versions, start, perspective,
quic::kQuicDefaultConnectionIdLength);
- const quic::ParsedQuicVersion& version =
- quic::ParseQuicVersionString(GetQuicFlag(FLAGS_quic_version));
+ const quic::ParsedQuicVersion& version = quic::ParseQuicVersionString(
+ quiche::GetQuicheCommandLineFlag(FLAGS_quic_version));
if (version != quic::ParsedQuicVersion::Unsupported()) {
framer.set_version(version);
}
diff --git a/quiche/quic/tools/quic_toy_client.cc b/quiche/quic/tools/quic_toy_client.cc
index 9baccbf..790e263 100644
--- a/quiche/quic/tools/quic_toy_client.cc
+++ b/quiche/quic/tools/quic_toy_client.cc
@@ -230,18 +230,18 @@
int QuicToyClient::SendRequestsAndPrintResponses(
std::vector<std::string> urls) {
QuicUrl url(urls[0], "https");
- std::string host = GetQuicFlag(FLAGS_host);
+ std::string host = quiche::GetQuicheCommandLineFlag(FLAGS_host);
if (host.empty()) {
host = url.host();
}
- int port = GetQuicFlag(FLAGS_port);
+ int port = quiche::GetQuicheCommandLineFlag(FLAGS_port);
if (port == 0) {
port = url.port();
}
quic::ParsedQuicVersionVector versions = quic::CurrentSupportedVersions();
- if (GetQuicFlag(FLAGS_quic_ietf_draft)) {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_quic_ietf_draft)) {
quic::QuicVersionInitializeSupportForIetfDraft();
versions = {};
for (const ParsedQuicVersion& version : AllSupportedVersions()) {
@@ -252,7 +252,8 @@
}
}
- std::string quic_version_string = GetQuicFlag(FLAGS_quic_version);
+ std::string quic_version_string =
+ quiche::GetQuicheCommandLineFlag(FLAGS_quic_version);
if (!quic_version_string.empty()) {
versions = quic::ParseQuicVersionVectorString(quic_version_string);
}
@@ -266,36 +267,40 @@
quic::QuicEnableVersion(version);
}
- if (GetQuicFlag(FLAGS_force_version_negotiation)) {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_force_version_negotiation)) {
versions.insert(versions.begin(),
quic::QuicVersionReservedForNegotiation());
}
- const int32_t num_requests(GetQuicFlag(FLAGS_num_requests));
+ const int32_t num_requests(
+ quiche::GetQuicheCommandLineFlag(FLAGS_num_requests));
std::unique_ptr<quic::ProofVerifier> proof_verifier;
- if (GetQuicFlag(FLAGS_disable_certificate_verification)) {
+ if (quiche::GetQuicheCommandLineFlag(
+ FLAGS_disable_certificate_verification)) {
proof_verifier = std::make_unique<FakeProofVerifier>();
} else {
proof_verifier = quic::CreateDefaultProofVerifier(url.host());
}
std::unique_ptr<quic::SessionCache> session_cache;
- if (num_requests > 1 && GetQuicFlag(FLAGS_one_connection_per_request)) {
+ if (num_requests > 1 &&
+ quiche::GetQuicheCommandLineFlag(FLAGS_one_connection_per_request)) {
session_cache = std::make_unique<QuicClientSessionCache>();
}
QuicConfig config;
- std::string connection_options_string = GetQuicFlag(FLAGS_connection_options);
+ std::string connection_options_string =
+ quiche::GetQuicheCommandLineFlag(FLAGS_connection_options);
if (!connection_options_string.empty()) {
config.SetConnectionOptionsToSend(
ParseQuicTagVector(connection_options_string));
}
std::string client_connection_options_string =
- GetQuicFlag(FLAGS_client_connection_options);
+ quiche::GetQuicheCommandLineFlag(FLAGS_client_connection_options);
if (!client_connection_options_string.empty()) {
config.SetClientConnectionOptions(
ParseQuicTagVector(client_connection_options_string));
}
- if (GetQuicFlag(FLAGS_multi_packet_chlo)) {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_multi_packet_chlo)) {
// Make the ClientHello span multiple packets by adding a custom transport
// parameter.
constexpr auto kCustomParameter =
@@ -304,13 +309,16 @@
config.custom_transport_parameters_to_send()[kCustomParameter] =
custom_value;
}
- config.set_max_time_before_crypto_handshake(QuicTime::Delta::FromMilliseconds(
- GetQuicFlag(FLAGS_max_time_before_crypto_handshake_ms)));
+ config.set_max_time_before_crypto_handshake(
+ QuicTime::Delta::FromMilliseconds(quiche::GetQuicheCommandLineFlag(
+ FLAGS_max_time_before_crypto_handshake_ms)));
int address_family_for_lookup = AF_UNSPEC;
- if (GetQuicFlag(FLAGS_ip_version_for_host_lookup) == "4") {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_ip_version_for_host_lookup) ==
+ "4") {
address_family_for_lookup = AF_INET;
- } else if (GetQuicFlag(FLAGS_ip_version_for_host_lookup) == "6") {
+ } else if (quiche::GetQuicheCommandLineFlag(
+ FLAGS_ip_version_for_host_lookup) == "6") {
address_family_for_lookup = AF_INET6;
}
@@ -324,11 +332,13 @@
return 1;
}
- if (!GetQuicFlag(FLAGS_default_client_cert).empty() &&
- !GetQuicFlag(FLAGS_default_client_cert_key).empty()) {
+ if (!quiche::GetQuicheCommandLineFlag(FLAGS_default_client_cert).empty() &&
+ !quiche::GetQuicheCommandLineFlag(FLAGS_default_client_cert_key)
+ .empty()) {
std::unique_ptr<ClientProofSource> proof_source =
- CreateTestClientProofSource(GetQuicFlag(FLAGS_default_client_cert),
- GetQuicFlag(FLAGS_default_client_cert_key));
+ CreateTestClientProofSource(
+ quiche::GetQuicheCommandLineFlag(FLAGS_default_client_cert),
+ quiche::GetQuicheCommandLineFlag(FLAGS_default_client_cert_key));
if (proof_source == nullptr) {
std::cerr << "Failed to create client proof source." << std::endl;
return 1;
@@ -336,22 +346,23 @@
client->crypto_config()->set_proof_source(std::move(proof_source));
}
- int32_t initial_mtu = GetQuicFlag(FLAGS_initial_mtu);
+ int32_t initial_mtu = quiche::GetQuicheCommandLineFlag(FLAGS_initial_mtu);
client->set_initial_max_packet_length(
initial_mtu != 0 ? initial_mtu : quic::kDefaultMaxPacketSize);
- client->set_drop_response_body(GetQuicFlag(FLAGS_drop_response_body));
+ client->set_drop_response_body(
+ quiche::GetQuicheCommandLineFlag(FLAGS_drop_response_body));
const int32_t server_connection_id_length =
- GetQuicFlag(FLAGS_server_connection_id_length);
+ quiche::GetQuicheCommandLineFlag(FLAGS_server_connection_id_length);
if (server_connection_id_length >= 0) {
client->set_server_connection_id_length(server_connection_id_length);
}
const int32_t client_connection_id_length =
- GetQuicFlag(FLAGS_client_connection_id_length);
+ quiche::GetQuicheCommandLineFlag(FLAGS_client_connection_id_length);
if (client_connection_id_length >= 0) {
client->set_client_connection_id_length(client_connection_id_length);
}
const size_t max_inbound_header_list_size =
- GetQuicFlag(FLAGS_max_inbound_header_list_size);
+ quiche::GetQuicheCommandLineFlag(FLAGS_max_inbound_header_list_size);
if (max_inbound_header_list_size > 0) {
client->set_max_inbound_header_list_size(max_inbound_header_list_size);
}
@@ -366,7 +377,8 @@
<< ". " << client->session()->error_details() << std::endl;
// 0: No error.
// 20: Failed to connect due to QUIC_INVALID_VERSION.
- return GetQuicFlag(FLAGS_version_mismatch_ok) ? 0 : 20;
+ return quiche::GetQuicheCommandLineFlag(FLAGS_version_mismatch_ok) ? 0
+ : 20;
}
std::cerr << "Failed to connect to " << host << ":" << port << ". "
<< quic::QuicErrorCodeToString(error) << " "
@@ -376,11 +388,12 @@
std::cerr << "Connected to " << host << ":" << port << std::endl;
// Construct the string body from flags, if provided.
- std::string body = GetQuicFlag(FLAGS_body);
- if (!GetQuicFlag(FLAGS_body_hex).empty()) {
- QUICHE_DCHECK(GetQuicFlag(FLAGS_body).empty())
+ std::string body = quiche::GetQuicheCommandLineFlag(FLAGS_body);
+ if (!quiche::GetQuicheCommandLineFlag(FLAGS_body_hex).empty()) {
+ QUICHE_DCHECK(quiche::GetQuicheCommandLineFlag(FLAGS_body).empty())
<< "Only set one of --body and --body_hex.";
- body = absl::HexStringToBytes(GetQuicFlag(FLAGS_body_hex));
+ body = absl::HexStringToBytes(
+ quiche::GetQuicheCommandLineFlag(FLAGS_body_hex));
}
// Construct a GET or POST request for supplied URL.
@@ -391,7 +404,7 @@
header_block[":path"] = url.PathParamsQuery();
// Append any additional headers supplied on the command line.
- const std::string headers = GetQuicFlag(FLAGS_headers);
+ const std::string headers = quiche::GetQuicheCommandLineFlag(FLAGS_headers);
for (absl::string_view sp : absl::StrSplit(headers, ';')) {
QuicheTextUtils::RemoveLeadingAndTrailingWhitespace(&sp);
if (sp.empty()) {
@@ -412,14 +425,14 @@
client->SendRequestAndWaitForResponse(header_block, body, /*fin=*/true);
// Print request and response details.
- if (!GetQuicFlag(FLAGS_quiet)) {
+ if (!quiche::GetQuicheCommandLineFlag(FLAGS_quiet)) {
std::cout << "Request:" << std::endl;
std::cout << "headers:" << header_block.DebugString();
- if (!GetQuicFlag(FLAGS_body_hex).empty()) {
+ if (!quiche::GetQuicheCommandLineFlag(FLAGS_body_hex).empty()) {
// Print the user provided hex, rather than binary body.
std::cout << "body:\n"
- << QuicheTextUtils::HexDump(
- absl::HexStringToBytes(GetQuicFlag(FLAGS_body_hex)))
+ << QuicheTextUtils::HexDump(absl::HexStringToBytes(
+ quiche::GetQuicheCommandLineFlag(FLAGS_body_hex)))
<< std::endl;
} else {
std::cout << "body: " << body << std::endl;
@@ -436,7 +449,7 @@
std::cout << "headers: " << client->latest_response_headers()
<< std::endl;
std::string response_body = client->latest_response_body();
- if (!GetQuicFlag(FLAGS_body_hex).empty()) {
+ if (!quiche::GetQuicheCommandLineFlag(FLAGS_body_hex).empty()) {
// Assume response is binary data.
std::cout << "body:\n"
<< QuicheTextUtils::HexDump(response_body) << std::endl;
@@ -458,7 +471,7 @@
if (response_code >= 200 && response_code < 300) {
std::cout << "Request succeeded (" << response_code << ")." << std::endl;
} else if (response_code >= 300 && response_code < 400) {
- if (GetQuicFlag(FLAGS_redirect_is_success)) {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_redirect_is_success)) {
std::cout << "Request succeeded (redirect " << response_code << ")."
<< std::endl;
} else {
@@ -472,7 +485,7 @@
}
if (i + 1 < num_requests) { // There are more requests to perform.
- if (GetQuicFlag(FLAGS_one_connection_per_request)) {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_one_connection_per_request)) {
std::cout << "Disconnecting client between requests." << std::endl;
client->Disconnect();
if (!client->Initialize()) {
@@ -485,7 +498,8 @@
<< std::endl;
return 1;
}
- } else if (!GetQuicFlag(FLAGS_disable_port_changes)) {
+ } else if (!quiche::GetQuicheCommandLineFlag(
+ FLAGS_disable_port_changes)) {
// Change the ephemeral port.
if (!client->ChangeEphemeralPort()) {
std::cerr << "Failed to change ephemeral port." << std::endl;
diff --git a/quiche/quic/tools/quic_toy_server.cc b/quiche/quic/tools/quic_toy_server.cc
index 03f910c..1e31b2e 100644
--- a/quiche/quic/tools/quic_toy_server.cc
+++ b/quiche/quic/tools/quic_toy_server.cc
@@ -45,14 +45,15 @@
std::unique_ptr<quic::QuicSimpleServerBackend>
QuicToyServer::MemoryCacheBackendFactory::CreateBackend() {
auto memory_cache_backend = std::make_unique<QuicMemoryCacheBackend>();
- if (GetQuicFlag(FLAGS_generate_dynamic_responses)) {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_generate_dynamic_responses)) {
memory_cache_backend->GenerateDynamicResponses();
}
- if (!GetQuicFlag(FLAGS_quic_response_cache_dir).empty()) {
+ if (!quiche::GetQuicheCommandLineFlag(FLAGS_quic_response_cache_dir)
+ .empty()) {
memory_cache_backend->InitializeBackend(
- GetQuicFlag(FLAGS_quic_response_cache_dir));
+ quiche::GetQuicheCommandLineFlag(FLAGS_quic_response_cache_dir));
}
- if (GetQuicFlag(FLAGS_enable_webtransport)) {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_enable_webtransport)) {
memory_cache_backend->EnableWebTransport();
}
return memory_cache_backend;
@@ -64,7 +65,7 @@
int QuicToyServer::Start() {
ParsedQuicVersionVector supported_versions;
- if (GetQuicFlag(FLAGS_quic_ietf_draft)) {
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_quic_ietf_draft)) {
QuicVersionInitializeSupportForIetfDraft();
for (const ParsedQuicVersion& version : AllSupportedVersions()) {
// Add all versions that supports IETF QUIC.
@@ -76,7 +77,8 @@
} else {
supported_versions = AllSupportedVersions();
}
- std::string versions_string = GetQuicFlag(FLAGS_quic_versions);
+ std::string versions_string =
+ quiche::GetQuicheCommandLineFlag(FLAGS_quic_versions);
if (!versions_string.empty()) {
supported_versions = ParseQuicVersionVectorString(versions_string);
}
@@ -92,7 +94,8 @@
backend.get(), std::move(proof_source), supported_versions);
if (!server->CreateUDPSocketAndListen(quic::QuicSocketAddress(
- quic::QuicIpAddress::Any6(), GetQuicFlag(FLAGS_port)))) {
+ quic::QuicIpAddress::Any6(),
+ quiche::GetQuicheCommandLineFlag(FLAGS_port)))) {
return 1;
}