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; }