diff options
Diffstat (limited to 'chromium/net/third_party/quiche/src/quiche/quic/tools/quic_simple_client_session.cc')
-rw-r--r-- | chromium/net/third_party/quiche/src/quiche/quic/tools/quic_simple_client_session.cc | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/chromium/net/third_party/quiche/src/quiche/quic/tools/quic_simple_client_session.cc b/chromium/net/third_party/quiche/src/quiche/quic/tools/quic_simple_client_session.cc index 1a001fb414a..013167caa90 100644 --- a/chromium/net/third_party/quiche/src/quiche/quic/tools/quic_simple_client_session.cc +++ b/chromium/net/third_party/quiche/src/quiche/quic/tools/quic_simple_client_session.cc @@ -10,22 +10,13 @@ namespace quic { QuicSimpleClientSession::QuicSimpleClientSession( const QuicConfig& config, const ParsedQuicVersionVector& supported_versions, - QuicConnection* connection, const QuicServerId& server_id, - QuicCryptoClientConfig* crypto_config, - QuicClientPushPromiseIndex* push_promise_index, bool drop_response_body) - : QuicSimpleClientSession(config, supported_versions, connection, server_id, - crypto_config, push_promise_index, - drop_response_body, - /*enable_web_transport=*/false) {} - -QuicSimpleClientSession::QuicSimpleClientSession( - const QuicConfig& config, const ParsedQuicVersionVector& supported_versions, - QuicConnection* connection, const QuicServerId& server_id, - QuicCryptoClientConfig* crypto_config, + QuicConnection* connection, QuicClientBase::NetworkHelper* network_helper, + const QuicServerId& server_id, QuicCryptoClientConfig* crypto_config, QuicClientPushPromiseIndex* push_promise_index, bool drop_response_body, bool enable_web_transport) : QuicSpdyClientSession(config, supported_versions, connection, server_id, crypto_config, push_promise_index), + network_helper_(network_helper), drop_response_body_(drop_response_body), enable_web_transport_(enable_web_transport) {} @@ -45,4 +36,24 @@ HttpDatagramSupport QuicSimpleClientSession::LocalHttpDatagramSupport() { : HttpDatagramSupport::kNone; } +std::unique_ptr<QuicPathValidationContext> +QuicSimpleClientSession::CreateContextForMultiPortPath() { + if (!network_helper_ || !connection()->multi_port_enabled()) { + return nullptr; + } + auto self_address = connection()->self_address(); + auto server_address = connection()->peer_address(); + if (!network_helper_->CreateUDPSocketAndBind( + server_address, self_address.host(), self_address.port() + 1)) { + return nullptr; + } + QuicPacketWriter* writer = network_helper_->CreateQuicPacketWriter(); + if (writer == nullptr) { + return nullptr; + } + return std::make_unique<PathMigrationContext>( + std::unique_ptr<QuicPacketWriter>(writer), + network_helper_->GetLatestClientAddress(), peer_address()); +} + } // namespace quic |