Roll src/net/third_party/quiche/src/ fd3ee30e9..9a910e3de (17 commits)
https://quiche.googlesource.com/quiche.git/+log/fd3ee30e9b48..9a910e3deaec
$ git log fd3ee30e9..9a910e3de --date=short --no-merges --format='%ad %ae %s'
2019-08-19 dschinazi Generate stateless reset tokens by hashing instead of XOR.
2019-08-19 dschinazi Workaround for Android UDP network conformance test
2019-08-19 dschinazi Deprecate quic_use_allocated_connection_ids
2019-08-19 renjietang Rename ENCRYPTION_REESTABLISHED to ENCRYPTION_ESTABLISHED as ENCRRYPTION_FIRST_ESTABLISHED has been removed.
2019-08-19 wub gfe-relnote: (n/a) Ensure BandwidthSampler.max_ack_height_tracker_.aggregation_epoch_start_time_ is initialized before Update(). Protected by --gfe2_reloadable_flag_quic_track_ack_height_in_bandwidth_sampler2, which replaces the old v1 flag.
2019-08-19 dschinazi Deprecate quic_deterministic_replacement_connection_ids
2019-08-19 renjietang Do not send stream type twice in QPACK streams.
2019-08-19 renjietang Remove unused ENCRYPTION_FIRST_ESTABLISHED.
2019-08-19 dschinazi Use deterministic replacement connection IDs
2019-08-19 zhongyi gfe-relnote: rename OnConnectivityProbeReceived to OnPacketReceived. Not flag protected, this is a refactor and has no behavior change.
2019-08-19 fkastenholz Add default to function generating name of Transport Error Code
2019-08-16 bnc Rename QuicSpdyStreamBodyBuffer to QuicSpdyStreamBodyManager.
2019-08-16 wub gfe-relnote: Move QuicCryptoServerStream::Helper::GenerateConnectionIdForReject to QuicDispatcher::GenerateNewServerConnectionId. Refactor only.
2019-08-16 bnc Remove Http2String wrapper for std::string.
2019-08-16 dschinazi Flush queued frames when processing coalesced packets
2019-08-16 renjietang Add QpackStreams into QuicSpdySession.
2019-08-16 fkastenholz Add text outputter for IETF stream types
Created with:
roll-dep src/net/third_party/quiche/src src/third_party/quic_trace/src
Change-Id: I4f5e3f43094b4a84c31b3ce64b4aaf1d694a571a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1761735
Reviewed-by: Tommi <[email protected]>
Reviewed-by: Zhongyi Shi <[email protected]>
Commit-Queue: Ryan Hamilton <[email protected]>
Cr-Commit-Position: refs/heads/master@{#689130}
diff --git a/net/BUILD.gn b/net/BUILD.gn
index d3a292c..0e1714e 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1323,7 +1323,6 @@
"third_party/quiche/src/http2/platform/api/http2_optional.h",
"third_party/quiche/src/http2/platform/api/http2_ptr_util.h",
"third_party/quiche/src/http2/platform/api/http2_reconstruct_object.h",
- "third_party/quiche/src/http2/platform/api/http2_string.h",
"third_party/quiche/src/http2/platform/api/http2_string_piece.h",
"third_party/quiche/src/http2/platform/api/http2_string_utils.h",
"third_party/quiche/src/quic/core/congestion_control/bandwidth_sampler.cc",
@@ -1508,8 +1507,8 @@
"third_party/quiche/src/quic/core/http/quic_spdy_session.h",
"third_party/quiche/src/quic/core/http/quic_spdy_stream.cc",
"third_party/quiche/src/quic/core/http/quic_spdy_stream.h",
- "third_party/quiche/src/quic/core/http/quic_spdy_stream_body_buffer.cc",
- "third_party/quiche/src/quic/core/http/quic_spdy_stream_body_buffer.h",
+ "third_party/quiche/src/quic/core/http/quic_spdy_stream_body_manager.cc",
+ "third_party/quiche/src/quic/core/http/quic_spdy_stream_body_manager.h",
"third_party/quiche/src/quic/core/http/spdy_server_push_utils.cc",
"third_party/quiche/src/quic/core/http/spdy_server_push_utils.h",
"third_party/quiche/src/quic/core/http/spdy_utils.cc",
@@ -5527,7 +5526,7 @@
"third_party/quiche/src/quic/core/http/quic_send_control_stream_test.cc",
"third_party/quiche/src/quic/core/http/quic_server_session_base_test.cc",
"third_party/quiche/src/quic/core/http/quic_spdy_session_test.cc",
- "third_party/quiche/src/quic/core/http/quic_spdy_stream_body_buffer_test.cc",
+ "third_party/quiche/src/quic/core/http/quic_spdy_stream_body_manager_test.cc",
"third_party/quiche/src/quic/core/http/quic_spdy_stream_test.cc",
"third_party/quiche/src/quic/core/http/spdy_server_push_utils_test.cc",
"third_party/quiche/src/quic/core/http/spdy_utils_test.cc",
@@ -5620,7 +5619,6 @@
"third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc",
"third_party/quiche/src/quic/test_tools/simulator/quic_endpoint_test.cc",
"third_party/quiche/src/quic/test_tools/simulator/simulator_test.cc",
- "third_party/quiche/src/quic/tools/quic_simple_crypto_server_stream_helper_test.cc",
"third_party/quiche/src/spdy/core/array_output_buffer.cc",
"third_party/quiche/src/spdy/core/array_output_buffer.h",
"third_party/quiche/src/spdy/core/array_output_buffer_test.cc",
diff --git a/net/http2/platform/impl/http2_string_utils_impl.h b/net/http2/platform/impl/http2_string_utils_impl.h
index 5b648b0..3bd8be7 100644
--- a/net/http2/platform/impl/http2_string_utils_impl.h
+++ b/net/http2/platform/impl/http2_string_utils_impl.h
@@ -14,13 +14,12 @@
#include "net/base/escape.h"
#include "net/base/hex_utils.h"
#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_string.h"
#include "net/third_party/quiche/src/http2/platform/api/http2_string_piece.h"
namespace http2 {
template <typename... Args>
-inline Http2String Http2StrCatImpl(const Args&... args) {
+inline std::string Http2StrCatImpl(const Args&... args) {
std::ostringstream oss;
int dummy[] = {1, (oss << args, 0)...};
static_cast<void>(dummy);
@@ -28,33 +27,33 @@
}
template <typename... Args>
-inline void Http2StrAppendImpl(Http2String* output, Args... args) {
+inline void Http2StrAppendImpl(std::string* output, Args... args) {
output->append(Http2StrCatImpl(args...));
}
template <typename... Args>
-inline Http2String Http2StringPrintfImpl(const Args&... args) {
+inline std::string Http2StringPrintfImpl(const Args&... args) {
return base::StringPrintf(std::forward<const Args&>(args)...);
}
-inline Http2String Http2HexEncodeImpl(const void* bytes, size_t size) {
+inline std::string Http2HexEncodeImpl(const void* bytes, size_t size) {
return base::HexEncode(bytes, size);
}
-inline Http2String Http2HexDecodeImpl(Http2StringPiece data) {
+inline std::string Http2HexDecodeImpl(Http2StringPiece data) {
return net::HexDecode(data);
}
-inline Http2String Http2HexDumpImpl(Http2StringPiece data) {
+inline std::string Http2HexDumpImpl(Http2StringPiece data) {
return net::HexDump(data);
}
-inline Http2String Http2HexEscapeImpl(Http2StringPiece data) {
+inline std::string Http2HexEscapeImpl(Http2StringPiece data) {
return net::EscapeQueryParamValue(data, false);
}
template <typename Number>
-inline Http2String Http2HexImpl(Number number) {
+inline std::string Http2HexImpl(Number number) {
std::stringstream str;
str << std::hex << number;
return str.str();
diff --git a/net/http2/platform/impl/http2_test_helpers_impl.cc b/net/http2/platform/impl/http2_test_helpers_impl.cc
index a00de1e..40858180 100644
--- a/net/http2/platform/impl/http2_test_helpers_impl.cc
+++ b/net/http2/platform/impl/http2_test_helpers_impl.cc
@@ -10,7 +10,7 @@
// This is a copy of the same named method in ::testing::internal.
// TODO(jamessynge): See about getting something like VERIFY_* adopted by
// gUnit (probably a very difficult task!).
-Http2String GetBoolAssertionFailureMessage(
+std::string GetBoolAssertionFailureMessage(
const ::testing::AssertionResult& assertion_result,
const char* expression_text,
const char* actual_predicate_value,
diff --git a/net/http2/platform/impl/http2_test_helpers_impl.h b/net/http2/platform/impl/http2_test_helpers_impl.h
index 535b217..cdcef0ce 100644
--- a/net/http2/platform/impl/http2_test_helpers_impl.h
+++ b/net/http2/platform/impl/http2_test_helpers_impl.h
@@ -16,7 +16,6 @@
#include <sstream>
#include "net/test/gtest_util.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_string.h"
#include "testing/gmock/include/gmock/gmock-matchers.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -43,19 +42,19 @@
operator bool() const { return matches_; }
- const Http2String& printed_value() const { return printed_value_; }
- const Http2String& matcher_description() const {
+ const std::string& printed_value() const { return printed_value_; }
+ const std::string& matcher_description() const {
return matcher_description_;
}
private:
bool matches_;
- Http2String printed_value_;
- Http2String matcher_description_;
+ std::string printed_value_;
+ std::string matcher_description_;
};
// Constructs a failure message for Boolean assertions such as VERIFY_TRUE.
-Http2String GetBoolAssertionFailureMessage(
+std::string GetBoolAssertionFailureMessage(
const ::testing::AssertionResult& assertion_result,
const char* expression_text,
const char* actual_predicate_value,
@@ -64,9 +63,9 @@
namespace {
// Define HasSubstr() for Http2StringPiece arguments.
// This shadows ::testing::HasSubstr(), which only works on argument types
-// that can be implicitly converted to a Http2String.
+// that can be implicitly converted to a std::string.
inline ::testing::PolymorphicMatcher<net::test::StringPieceHasSubstrMatcher>
-HasSubstr(const Http2String& substring) {
+HasSubstr(const std::string& substring) {
return ::testing::MakePolymorphicMatcher(
net::test::StringPieceHasSubstrMatcher(substring));
}
diff --git a/net/quic/bidirectional_stream_quic_impl_unittest.cc b/net/quic/bidirectional_stream_quic_impl_unittest.cc
index 2d096868..a166b05e6 100644
--- a/net/quic/bidirectional_stream_quic_impl_unittest.cc
+++ b/net/quic/bidirectional_stream_quic_impl_unittest.cc
@@ -841,7 +841,7 @@
// TODO(nharper): Make these tests work with TLS.
quic::ParsedQuicVersionVector AllSupportedVersionsWithQuicCrypto() {
quic::ParsedQuicVersionVector versions;
- for (const auto& version : quic::AllSupportedVersions()) {
+ for (const auto& version : quic::AllVersionsExcept99()) {
if (version.handshake_protocol == quic::PROTOCOL_QUIC_CRYPTO) {
versions.push_back(version);
}
diff --git a/net/quic/mock_crypto_client_stream.cc b/net/quic/mock_crypto_client_stream.cc
index effe776..bf80471 100644
--- a/net/quic/mock_crypto_client_stream.cc
+++ b/net/quic/mock_crypto_client_stream.cc
@@ -134,7 +134,7 @@
QuicMakeUnique<NullEncrypter>(Perspective::IS_CLIENT));
}
session()->connection()->SetDefaultEncryptionLevel(ENCRYPTION_ZERO_RTT);
- session()->OnCryptoHandshakeEvent(QuicSession::ENCRYPTION_REESTABLISHED);
+ session()->OnCryptoHandshakeEvent(QuicSession::ENCRYPTION_ESTABLISHED);
break;
}
diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc
index f300786a..6f915e7 100644
--- a/net/quic/quic_chromium_client_session.cc
+++ b/net/quic/quic_chromium_client_session.cc
@@ -1513,7 +1513,7 @@
CryptoHandshakeEvent event) {
if (!callback_.is_null() &&
(!require_confirmation_ || event == HANDSHAKE_CONFIRMED ||
- event == ENCRYPTION_REESTABLISHED)) {
+ event == ENCRYPTION_ESTABLISHED)) {
// TODO(rtenneti): Currently for all CryptoHandshakeEvent events, callback_
// could be called because there are no error events in CryptoHandshakeEvent
// enum. If error events are added to CryptoHandshakeEvent, then the
@@ -1740,9 +1740,10 @@
quic::QuicSpdySession::OnSuccessfulVersionNegotiation(version);
}
-void QuicChromiumClientSession::OnConnectivityProbeReceived(
+void QuicChromiumClientSession::OnPacketReceived(
const quic::QuicSocketAddress& self_address,
- const quic::QuicSocketAddress& peer_address) {
+ const quic::QuicSocketAddress& peer_address,
+ bool is_connectivity_probe) {
DVLOG(1) << "Speculative probing response from ip:port: "
<< peer_address.ToString()
<< " to ip:port: " << self_address.ToString() << " is received";
diff --git a/net/quic/quic_chromium_client_session.h b/net/quic/quic_chromium_client_session.h
index 6eee78fc..59ab035 100644
--- a/net/quic/quic_chromium_client_session.h
+++ b/net/quic/quic_chromium_client_session.h
@@ -504,9 +504,9 @@
quic::ConnectionCloseSource source) override;
void OnSuccessfulVersionNegotiation(
const quic::ParsedQuicVersion& version) override;
- void OnConnectivityProbeReceived(
- const quic::QuicSocketAddress& self_address,
- const quic::QuicSocketAddress& peer_address) override;
+ void OnPacketReceived(const quic::QuicSocketAddress& self_address,
+ const quic::QuicSocketAddress& peer_address,
+ bool is_connectivity_probe) override;
void OnPathDegrading() override;
bool ShouldKeepConnectionAlive() const override;
diff --git a/net/quic/quic_chromium_client_session_test.cc b/net/quic/quic_chromium_client_session_test.cc
index ea83c2c7..1776759 100644
--- a/net/quic/quic_chromium_client_session_test.cc
+++ b/net/quic/quic_chromium_client_session_test.cc
@@ -256,7 +256,7 @@
INSTANTIATE_TEST_SUITE_P(
VersionIncludeStreamDependencySequence,
QuicChromiumClientSessionTest,
- ::testing::Combine(::testing::ValuesIn(quic::AllSupportedVersions()),
+ ::testing::Combine(::testing::ValuesIn(quic::AllVersionsExcept99()),
::testing::Bool()));
// TODO(950069): Add testing for frame_origin in NetworkIsolationKey using
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h
index 5705216..5c111c7 100644
--- a/net/quic/quic_flags_list.h
+++ b/net/quic/quic_flags_list.h
@@ -379,9 +379,10 @@
false)
// If true, QUIC will track max ack height in BandwidthSampler.
-QUIC_FLAG(bool,
- FLAGS_quic_reloadable_flag_quic_track_ack_height_in_bandwidth_sampler,
- false)
+QUIC_FLAG(
+ bool,
+ FLAGS_quic_reloadable_flag_quic_track_ack_height_in_bandwidth_sampler2,
+ false)
// If true, QuicSession::ShouldKeepConnectionAlive() will not consider locally
// closed streams whose highest byte offset is not received yet.
@@ -408,3 +409,15 @@
QUIC_FLAG(bool,
FLAGS_quic_restart_flag_quic_framer_uses_undecryptable_upcall,
false)
+
+// When true, QuicUtils::GenerateStatelessResetToken will hash connection IDs
+// instead of XORing the bytes
+QUIC_FLAG(bool,
+ FLAGS_quic_restart_flag_quic_use_hashed_stateless_reset_tokens,
+ false)
+
+// This flag enables a temporary workaround which makes us reply to a specific
+// invalid packet that is sent by an Android UDP network conformance test.
+QUIC_FLAG(bool,
+ FLAGS_quic_reloadable_flag_quic_reply_to_old_android_conformance_test,
+ false)
diff --git a/net/quic/quic_http_stream_test.cc b/net/quic/quic_http_stream_test.cc
index d02810c..1a16a03 100644
--- a/net/quic/quic_http_stream_test.cc
+++ b/net/quic/quic_http_stream_test.cc
@@ -712,7 +712,7 @@
INSTANTIATE_TEST_SUITE_P(
VersionIncludeStreamDependencySequence,
QuicHttpStreamTest,
- ::testing::Combine(::testing::ValuesIn(quic::AllSupportedVersions()),
+ ::testing::Combine(::testing::ValuesIn(quic::AllVersionsExcept99()),
::testing::Bool()));
TEST_P(QuicHttpStreamTest, RenewStreamForAuth) {
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index cec55d3..23af9ff 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -160,7 +160,7 @@
std::vector<PoolingTestParams> GetPoolingTestParams() {
std::vector<PoolingTestParams> params;
quic::ParsedQuicVersionVector all_supported_versions =
- quic::AllSupportedVersions();
+ quic::AllVersionsExcept99();
for (const quic::ParsedQuicVersion version : all_supported_versions) {
// TODO(rch): crbug.com/978745 - Make this work with TLS
if (version.handshake_protocol != quic::PROTOCOL_TLS1_3) {
@@ -970,7 +970,7 @@
quic::ParsedQuicVersionVector AllSupportedVersionsWithoutTls() {
quic::ParsedQuicVersionVector versions;
- for (auto version : quic::AllSupportedVersions()) {
+ for (auto version : quic::AllVersionsExcept99()) {
// TODO(rch): crbug.com/978745 - Make this work with TLS
if (version.handshake_protocol != quic::PROTOCOL_TLS1_3) {
versions.push_back(version);
diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc
index e0a1b9c..714a618 100644
--- a/net/quic/quic_stream_factory_test.cc
+++ b/net/quic/quic_stream_factory_test.cc
@@ -119,7 +119,7 @@
std::vector<TestParams> GetTestParams() {
std::vector<TestParams> params;
quic::ParsedQuicVersionVector all_supported_versions =
- quic::AllSupportedVersions();
+ quic::AllVersionsExcept99();
for (const auto& version : all_supported_versions) {
// TODO(rch): crbug.com/978745 - Make this work with TLS
if (version.handshake_protocol != quic::PROTOCOL_TLS1_3) {
@@ -162,7 +162,7 @@
std::vector<PoolingTestParams> GetPoolingTestParams() {
std::vector<PoolingTestParams> params;
quic::ParsedQuicVersionVector all_supported_versions =
- quic::AllSupportedVersions();
+ quic::AllVersionsExcept99();
for (const quic::ParsedQuicVersion version : all_supported_versions) {
// TODO(rch): crbug.com/978745 - Make this work with TLS
if (version.handshake_protocol != quic::PROTOCOL_TLS1_3) {
diff --git a/net/quic/quic_test_packet_maker.cc b/net/quic/quic_test_packet_maker.cc
index d18d7a0..0b7f60f 100644
--- a/net/quic/quic_test_packet_maker.cc
+++ b/net/quic/quic_test_packet_maker.cc
@@ -802,6 +802,8 @@
quic::SettingsFrame settings;
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] =
kQuicMaxHeaderListSize;
+ settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
+ quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer1;
quic::QuicByteCount frame_length1 =
http_encoder_.SerializeSettingsFrame(settings, &buffer1);
@@ -897,6 +899,8 @@
quic::SettingsFrame settings;
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] =
kQuicMaxHeaderListSize;
+ settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
+ quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer1;
quic::QuicByteCount frame_length1 =
http_encoder_.SerializeSettingsFrame(settings, &buffer1);
@@ -969,6 +973,8 @@
quic::SettingsFrame settings;
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] =
kQuicMaxHeaderListSize;
+ settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
+ quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer1;
quic::QuicByteCount frame_length1 =
http_encoder_.SerializeSettingsFrame(settings, &buffer1);
@@ -1314,6 +1320,8 @@
std::string type(1, 0x00);
quic::SettingsFrame settings;
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] = kQuicMaxHeaderListSize;
+ settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
+ quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializeSettingsFrame(settings, &buffer);
@@ -1359,6 +1367,8 @@
std::string type(1, 0x00);
quic::SettingsFrame settings;
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] = kQuicMaxHeaderListSize;
+ settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
+ quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializeSettingsFrame(settings, &buffer);
@@ -1377,6 +1387,9 @@
std::vector<quic::QuicStreamFrame> stream_frames =
GenerateNextStreamFrames(stream_id, false, data);
+ stream_frames.push_back(GenerateNextStreamFrame(10, false, "\x02"));
+ stream_frames.push_back(GenerateNextStreamFrame(6, false, "\x03"));
+
for (const auto& frame : stream_frames)
frames.push_back(quic::QuicFrame(frame));
diff --git a/net/tools/quic/quic_simple_server_session_helper.cc b/net/tools/quic/quic_simple_server_session_helper.cc
index 376d857..7cb1bd6 100644
--- a/net/tools/quic/quic_simple_server_session_helper.cc
+++ b/net/tools/quic/quic_simple_server_session_helper.cc
@@ -9,18 +9,10 @@
namespace net {
QuicSimpleServerSessionHelper::QuicSimpleServerSessionHelper(
- quic::QuicRandom* random)
- : random_(random) {}
+ quic::QuicRandom* random) {}
QuicSimpleServerSessionHelper::~QuicSimpleServerSessionHelper() = default;
-quic::QuicConnectionId
-QuicSimpleServerSessionHelper::GenerateConnectionIdForReject(
- quic::QuicTransportVersion /*version*/,
- quic::QuicConnectionId /*connection_id*/) const {
- return quic::QuicUtils::CreateRandomConnectionId(random_);
-}
-
bool QuicSimpleServerSessionHelper::CanAcceptClientHello(
const quic::CryptoHandshakeMessage& message,
const quic::QuicSocketAddress& client_address,
diff --git a/net/tools/quic/quic_simple_server_session_helper.h b/net/tools/quic/quic_simple_server_session_helper.h
index 4ba4ac6f..7f25052 100644
--- a/net/tools/quic/quic_simple_server_session_helper.h
+++ b/net/tools/quic/quic_simple_server_session_helper.h
@@ -19,18 +19,11 @@
~QuicSimpleServerSessionHelper() override;
- quic::QuicConnectionId GenerateConnectionIdForReject(
- quic::QuicTransportVersion /*version*/,
- quic::QuicConnectionId /*connection_id*/) const override;
-
bool CanAcceptClientHello(const quic::CryptoHandshakeMessage& message,
const quic::QuicSocketAddress& client_address,
const quic::QuicSocketAddress& peer_address,
const quic::QuicSocketAddress& self_address,
std::string* error_details) const override;
-
- private:
- quic::QuicRandom* random_; // Unowned.
};
} // namespace net