Use QuicSession::transport_version() instead of QuicConnection::transport_version() to make code cleaner.
gfe-relnote: code cleanup, not protected.
PiperOrigin-RevId: 267628510
Change-Id: I2b28c42ec2345870905e7e5d7e88721be86ad6e4
diff --git a/quic/core/http/quic_headers_stream.cc b/quic/core/http/quic_headers_stream.cc
index 9c99ab7..394d42a 100644
--- a/quic/core/http/quic_headers_stream.cc
+++ b/quic/core/http/quic_headers_stream.cc
@@ -27,8 +27,7 @@
QuicHeadersStream::CompressedHeaderInfo::~CompressedHeaderInfo() {}
QuicHeadersStream::QuicHeadersStream(QuicSpdySession* session)
- : QuicStream(QuicUtils::GetHeadersStreamId(
- session->connection()->transport_version()),
+ : QuicStream(QuicUtils::GetHeadersStreamId(session->transport_version()),
session,
/*is_static=*/true,
BIDIRECTIONAL),
diff --git a/quic/core/http/quic_headers_stream_test.cc b/quic/core/http/quic_headers_stream_test.cc
index 2035d47..cfc5381 100644
--- a/quic/core/http/quic_headers_stream_test.cc
+++ b/quic/core/http/quic_headers_stream_test.cc
@@ -202,7 +202,7 @@
deframer_ = std::unique_ptr<http2::Http2DecoderAdapter>(
new http2::Http2DecoderAdapter());
deframer_->set_visitor(&visitor_);
- EXPECT_EQ(transport_version(), session_.connection()->transport_version());
+ EXPECT_EQ(transport_version(), session_.transport_version());
EXPECT_TRUE(headers_stream_ != nullptr);
connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
client_id_1_ = GetNthClientInitiatedBidirectionalStreamId(
diff --git a/quic/core/http/quic_server_session_base.cc b/quic/core/http/quic_server_session_base.cc
index 29bce86..5805fc9 100644
--- a/quic/core/http/quic_server_session_base.cc
+++ b/quic/core/http/quic_server_session_base.cc
@@ -201,8 +201,7 @@
return false;
}
- if (QuicUtils::IsServerInitiatedStreamId(connection()->transport_version(),
- id)) {
+ if (QuicUtils::IsServerInitiatedStreamId(transport_version(), id)) {
QUIC_DLOG(INFO) << "Invalid incoming even stream_id:" << id;
connection()->CloseConnection(
QUIC_INVALID_STREAM_ID, "Client created even numbered stream",
@@ -224,7 +223,7 @@
}
if (!GetQuicReloadableFlag(quic_use_common_stream_check) &&
- !VersionHasIetfQuicFrames(connection()->transport_version())) {
+ !VersionHasIetfQuicFrames(transport_version())) {
if (GetNumOpenOutgoingStreams() >=
stream_id_manager().max_open_outgoing_streams()) {
QUIC_VLOG(1) << "No more streams should be created. "
@@ -248,7 +247,7 @@
}
if (!GetQuicReloadableFlag(quic_use_common_stream_check) &&
- !VersionHasIetfQuicFrames(connection()->transport_version())) {
+ !VersionHasIetfQuicFrames(transport_version())) {
if (GetNumOpenOutgoingStreams() >=
stream_id_manager().max_open_outgoing_streams()) {
QUIC_VLOG(1) << "No more streams should be created. "
diff --git a/quic/core/http/quic_spdy_client_session.cc b/quic/core/http/quic_spdy_client_session.cc
index 50ed00d..ef9f2e2 100644
--- a/quic/core/http/quic_spdy_client_session.cc
+++ b/quic/core/http/quic_spdy_client_session.cc
@@ -53,7 +53,7 @@
return false;
}
if (!GetQuicReloadableFlag(quic_use_common_stream_check) &&
- !VersionHasIetfQuicFrames(connection()->transport_version())) {
+ !VersionHasIetfQuicFrames(transport_version())) {
if (GetNumOpenOutgoingStreams() >=
stream_id_manager().max_open_outgoing_streams()) {
QUIC_DLOG(INFO) << "Failed to create a new outgoing stream. "
@@ -136,9 +136,8 @@
<< "Already received goaway.";
return false;
}
- if (QuicUtils::IsClientInitiatedStreamId(connection()->transport_version(),
- id) ||
- (VersionHasIetfQuicFrames(connection()->transport_version()) &&
+ if (QuicUtils::IsClientInitiatedStreamId(transport_version(), id) ||
+ (VersionHasIetfQuicFrames(transport_version()) &&
QuicUtils::IsBidirectionalStreamId(id))) {
QUIC_LOG(WARNING) << "Received invalid push stream id " << id;
connection()->CloseConnection(
diff --git a/quic/core/http/quic_spdy_client_session_base.cc b/quic/core/http/quic_spdy_client_session_base.cc
index a2a9aae..37e5dd5 100644
--- a/quic/core/http/quic_spdy_client_session_base.cc
+++ b/quic/core/http/quic_spdy_client_session_base.cc
@@ -43,7 +43,7 @@
CryptoHandshakeEvent event) {
QuicSpdySession::OnCryptoHandshakeEvent(event);
if (event == HANDSHAKE_CONFIRMED && max_allowed_push_id() > 0 &&
- VersionHasIetfQuicFrames(connection()->transport_version())) {
+ VersionHasIetfQuicFrames(transport_version())) {
SendMaxPushId(max_allowed_push_id());
}
}
@@ -75,9 +75,9 @@
return;
}
if (promised_stream_id !=
- QuicUtils::GetInvalidStreamId(connection()->transport_version()) &&
+ QuicUtils::GetInvalidStreamId(transport_version()) &&
largest_promised_stream_id_ !=
- QuicUtils::GetInvalidStreamId(connection()->transport_version()) &&
+ QuicUtils::GetInvalidStreamId(transport_version()) &&
promised_stream_id <= largest_promised_stream_id_) {
connection()->CloseConnection(
QUIC_INVALID_STREAM_ID,
@@ -93,7 +93,7 @@
return;
}
- if (VersionHasIetfQuicFrames(connection()->transport_version()) &&
+ if (VersionHasIetfQuicFrames(transport_version()) &&
promised_stream_id > max_allowed_push_id()) {
connection()->CloseConnection(
QUIC_INVALID_STREAM_ID,
@@ -199,7 +199,7 @@
// ToDo: Consider implementing logic to send a new MAX_PUSH_ID frame to allow
// another stream to be promised.
promised_by_id_.erase(promised->id());
- if (!VersionUsesQpack(connection()->transport_version())) {
+ if (!VersionUsesQpack(transport_version())) {
headers_stream()->MaybeReleaseSequencerBuffer();
}
}
@@ -219,7 +219,7 @@
void QuicSpdyClientSessionBase::CloseStreamInner(QuicStreamId stream_id,
bool locally_reset) {
QuicSpdySession::CloseStreamInner(stream_id, locally_reset);
- if (!VersionUsesQpack(connection()->transport_version())) {
+ if (!VersionUsesQpack(transport_version())) {
headers_stream()->MaybeReleaseSequencerBuffer();
}
}
diff --git a/quic/core/http/quic_spdy_server_stream_base_test.cc b/quic/core/http/quic_spdy_server_stream_base_test.cc
index 15638ca..1888e03 100644
--- a/quic/core/http/quic_spdy_server_stream_base_test.cc
+++ b/quic/core/http/quic_spdy_server_stream_base_test.cc
@@ -31,10 +31,10 @@
: session_(new MockQuicConnection(&helper_,
&alarm_factory_,
Perspective::IS_SERVER)) {
- stream_ = new TestQuicSpdyServerStream(
- GetNthClientInitiatedBidirectionalStreamId(
- session_.connection()->transport_version(), 0),
- &session_, BIDIRECTIONAL);
+ stream_ =
+ new TestQuicSpdyServerStream(GetNthClientInitiatedBidirectionalStreamId(
+ session_.transport_version(), 0),
+ &session_, BIDIRECTIONAL);
session_.ActivateStream(QuicWrapUnique(stream_));
helper_.AdvanceTime(QuicTime::Delta::FromSeconds(1));
}
@@ -59,7 +59,7 @@
EXPECT_CALL(session_, SendRstStream(_, QUIC_STREAM_NO_ERROR, _)).Times(0);
- if (!VersionHasIetfQuicFrames(session_.connection()->transport_version())) {
+ if (!VersionHasIetfQuicFrames(session_.transport_version())) {
EXPECT_CALL(session_, SendRstStream(_, QUIC_RST_ACKNOWLEDGEMENT, _))
.Times(1);
} else {
@@ -76,7 +76,7 @@
QuicRstStreamFrame rst_frame(kInvalidControlFrameId, stream_->id(),
QUIC_STREAM_CANCELLED, 1234);
stream_->OnStreamReset(rst_frame);
- if (VersionHasIetfQuicFrames(session_.connection()->transport_version())) {
+ if (VersionHasIetfQuicFrames(session_.transport_version())) {
// Create and inject a STOP SENDING frame to complete the close
// of the stream. This is only needed for version 99/IETF QUIC.
QuicStopSendingFrame stop_sending(
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index 719b3dc..e626f2a 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -186,7 +186,7 @@
return;
}
- if (VersionUsesQpack(session_->connection()->transport_version())) {
+ if (VersionUsesQpack(session_->transport_version())) {
CloseConnection("HEADERS frame not allowed on headers stream.",
QUIC_INVALID_HEADERS_STREAM_DATA);
return;
@@ -239,7 +239,7 @@
int weight,
bool exclusive) override {
DCHECK(!VersionUsesQpack(session_->transport_version()));
- if (session_->connection()->transport_version() <= QUIC_VERSION_39) {
+ if (session_->transport_version() <= QUIC_VERSION_39) {
CloseConnection("SPDY PRIORITY frame received.",
QUIC_INVALID_HEADERS_STREAM_DATA);
return;
@@ -368,17 +368,17 @@
void QuicSpdySession::Initialize() {
QuicSession::Initialize();
- if (!VersionUsesQpack(connection()->transport_version())) {
+ if (!VersionUsesQpack(transport_version())) {
if (perspective() == Perspective::IS_SERVER) {
set_largest_peer_created_stream_id(
- QuicUtils::GetHeadersStreamId(connection()->transport_version()));
+ QuicUtils::GetHeadersStreamId(transport_version()));
} else {
QuicStreamId headers_stream_id = GetNextOutgoingBidirectionalStreamId();
- DCHECK_EQ(headers_stream_id, QuicUtils::GetHeadersStreamId(
- connection()->transport_version()));
+ DCHECK_EQ(headers_stream_id,
+ QuicUtils::GetHeadersStreamId(transport_version()));
}
auto headers_stream = QuicMakeUnique<QuicHeadersStream>((this));
- DCHECK_EQ(QuicUtils::GetHeadersStreamId(connection()->transport_version()),
+ DCHECK_EQ(QuicUtils::GetHeadersStreamId(transport_version()),
headers_stream->id());
headers_stream_ = headers_stream.get();
@@ -403,14 +403,14 @@
}
void QuicSpdySession::OnDecoderStreamError(QuicStringPiece /*error_message*/) {
- DCHECK(VersionUsesQpack(connection()->transport_version()));
+ DCHECK(VersionUsesQpack(transport_version()));
// TODO(112770235): Signal connection error on decoder stream errors.
QUIC_NOTREACHED();
}
void QuicSpdySession::OnEncoderStreamError(QuicStringPiece /*error_message*/) {
- DCHECK(VersionUsesQpack(connection()->transport_version()));
+ DCHECK(VersionUsesQpack(transport_version()));
// TODO(112770235): Signal connection error on encoder stream errors.
QUIC_NOTREACHED();
@@ -491,7 +491,7 @@
bool fin,
const spdy::SpdyStreamPrecedence& precedence,
QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) {
- DCHECK(!VersionUsesQpack(connection()->transport_version()));
+ DCHECK(!VersionUsesQpack(transport_version()));
return WriteHeadersOnHeadersStreamImpl(
id, std::move(headers), fin,
@@ -504,8 +504,8 @@
QuicStreamId parent_stream_id,
int weight,
bool exclusive) {
- DCHECK(!VersionUsesQpack(connection()->transport_version()));
- if (connection()->transport_version() <= QUIC_VERSION_39) {
+ DCHECK(!VersionUsesQpack(transport_version()));
+ if (transport_version() <= QUIC_VERSION_39) {
return 0;
}
SpdyPriorityIR priority_frame(id, parent_stream_id, weight, exclusive);
@@ -516,7 +516,7 @@
}
void QuicSpdySession::WriteH3Priority(const PriorityFrame& priority) {
- DCHECK(VersionHasStreamType(connection()->transport_version()));
+ DCHECK(VersionHasStreamType(transport_version()));
DCHECK(perspective() == Perspective::IS_CLIENT)
<< "Server must not send priority";
@@ -533,14 +533,14 @@
return;
}
- if (VersionHasIetfQuicFrames(connection()->transport_version()) &&
+ if (VersionHasIetfQuicFrames(transport_version()) &&
promised_stream_id > max_allowed_push_id()) {
QUIC_BUG
<< "Server shouldn't send push id higher than client's MAX_PUSH_ID.";
return;
}
- if (!VersionHasStreamType(connection()->transport_version())) {
+ if (!VersionHasStreamType(transport_version())) {
SpdyPushPromiseIR push_promise(original_stream_id, promised_stream_id,
std::move(headers));
// PUSH_PROMISE must not be the last frame sent out, at least followed by
@@ -564,7 +564,7 @@
}
void QuicSpdySession::SendMaxHeaderListSize(size_t value) {
- if (VersionHasStreamType(connection()->transport_version())) {
+ if (VersionHasStreamType(transport_version())) {
QuicConnection::ScopedPacketFlusher flusher(connection());
send_control_stream_->MaybeSendSettingsFrame();
// TODO(renjietang): Remove this once stream id manager can take dynamically
@@ -587,13 +587,13 @@
}
QpackEncoder* QuicSpdySession::qpack_encoder() {
- DCHECK(VersionUsesQpack(connection()->transport_version()));
+ DCHECK(VersionUsesQpack(transport_version()));
return qpack_encoder_.get();
}
QpackDecoder* QuicSpdySession::qpack_decoder() {
- DCHECK(VersionUsesQpack(connection()->transport_version()));
+ DCHECK(VersionUsesQpack(transport_version()));
return qpack_decoder_.get();
}
@@ -645,7 +645,7 @@
// QuicSpdySession supports PendingStreams, therefore this method should
// eventually just return true. However, pending streams can only be used if
// unidirectional stream type is supported.
- return VersionHasStreamType(connection()->transport_version());
+ return VersionHasStreamType(transport_version());
}
size_t QuicSpdySession::WriteHeadersOnHeadersStreamImpl(
@@ -656,7 +656,7 @@
int weight,
bool exclusive,
QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) {
- DCHECK(!VersionUsesQpack(connection()->transport_version()));
+ DCHECK(!VersionUsesQpack(transport_version()));
SpdyHeadersIR headers_frame(id, std::move(headers));
headers_frame.set_fin(fin);
@@ -686,7 +686,7 @@
}
void QuicSpdySession::OnSetting(uint64_t id, uint64_t value) {
- if (VersionHasStreamType(connection()->transport_version())) {
+ if (VersionHasStreamType(transport_version())) {
// SETTINGS frame received on the control stream.
switch (id) {
case SETTINGS_QPACK_MAX_TABLE_CAPACITY:
@@ -798,9 +798,8 @@
return;
}
}
- DCHECK_EQ(QuicUtils::GetInvalidStreamId(connection()->transport_version()),
- stream_id_);
- DCHECK_EQ(QuicUtils::GetInvalidStreamId(connection()->transport_version()),
+ DCHECK_EQ(QuicUtils::GetInvalidStreamId(transport_version()), stream_id_);
+ DCHECK_EQ(QuicUtils::GetInvalidStreamId(transport_version()),
promised_stream_id_);
stream_id_ = stream_id;
fin_ = fin;
@@ -808,9 +807,8 @@
void QuicSpdySession::OnPushPromise(SpdyStreamId stream_id,
SpdyStreamId promised_stream_id) {
- DCHECK_EQ(QuicUtils::GetInvalidStreamId(connection()->transport_version()),
- stream_id_);
- DCHECK_EQ(QuicUtils::GetInvalidStreamId(connection()->transport_version()),
+ DCHECK_EQ(QuicUtils::GetInvalidStreamId(transport_version()), stream_id_);
+ DCHECK_EQ(QuicUtils::GetInvalidStreamId(transport_version()),
promised_stream_id_);
stream_id_ = stream_id;
promised_stream_id_ = promised_stream_id;
@@ -832,21 +830,20 @@
QUIC_DVLOG(1) << "Received header list for stream " << stream_id_ << ": "
<< header_list.DebugString();
// This code path is only executed for push promise in IETF QUIC.
- if (VersionUsesQpack(connection()->transport_version())) {
+ if (VersionUsesQpack(transport_version())) {
DCHECK(promised_stream_id_ !=
- QuicUtils::GetInvalidStreamId(connection()->transport_version()));
+ QuicUtils::GetInvalidStreamId(transport_version()));
}
if (promised_stream_id_ ==
- QuicUtils::GetInvalidStreamId(connection()->transport_version())) {
+ QuicUtils::GetInvalidStreamId(transport_version())) {
OnStreamHeaderList(stream_id_, fin_, frame_len_, header_list);
} else {
OnPromiseHeaderList(stream_id_, promised_stream_id_, frame_len_,
header_list);
}
// Reset state for the next frame.
- promised_stream_id_ =
- QuicUtils::GetInvalidStreamId(connection()->transport_version());
- stream_id_ = QuicUtils::GetInvalidStreamId(connection()->transport_version());
+ promised_stream_id_ = QuicUtils::GetInvalidStreamId(transport_version());
+ stream_id_ = QuicUtils::GetInvalidStreamId(transport_version());
fin_ = false;
frame_len_ = 0;
}
@@ -894,7 +891,7 @@
}
bool QuicSpdySession::ProcessPendingStream(PendingStream* pending) {
- DCHECK(VersionHasStreamType(connection()->transport_version()));
+ DCHECK(VersionHasStreamType(transport_version()));
DCHECK(connection()->connected());
struct iovec iov;
if (!pending->sequencer()->GetReadableRegion(&iov)) {
@@ -968,7 +965,7 @@
}
void QuicSpdySession::MaybeInitializeHttp3UnidirectionalStreams() {
- DCHECK(VersionHasStreamType(connection()->transport_version()));
+ DCHECK(VersionHasStreamType(transport_version()));
if (!send_control_stream_ && CanOpenNextOutgoingUnidirectionalStream()) {
auto send_control = QuicMakeUnique<QuicSendControlStream>(
GetNextOutgoingUnidirectionalStreamId(), this,
@@ -999,15 +996,14 @@
}
void QuicSpdySession::OnCanCreateNewOutgoingStream(bool unidirectional) {
- if (unidirectional &&
- VersionHasStreamType(connection()->transport_version())) {
+ if (unidirectional && VersionHasStreamType(transport_version())) {
MaybeInitializeHttp3UnidirectionalStreams();
}
}
void QuicSpdySession::set_max_allowed_push_id(
QuicStreamId max_allowed_push_id) {
- if (VersionHasIetfQuicFrames(connection()->transport_version()) &&
+ if (VersionHasIetfQuicFrames(transport_version()) &&
perspective() == Perspective::IS_SERVER &&
max_allowed_push_id > max_allowed_push_id_) {
OnCanCreateNewOutgoingStream(true);
@@ -1015,14 +1011,14 @@
max_allowed_push_id_ = max_allowed_push_id;
- if (VersionHasIetfQuicFrames(connection()->transport_version()) &&
+ if (VersionHasIetfQuicFrames(transport_version()) &&
perspective() == Perspective::IS_CLIENT && IsHandshakeConfirmed()) {
SendMaxPushId(max_allowed_push_id);
}
}
void QuicSpdySession::SendMaxPushId(QuicStreamId max_allowed_push_id) {
- DCHECK(VersionHasStreamType(connection()->transport_version()));
+ DCHECK(VersionHasStreamType(transport_version()));
send_control_stream_->SendMaxPushIdFrame(max_allowed_push_id);
}
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index 28bcdcf..d77cfef 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -199,8 +199,7 @@
is_decoder_processing_input_(false),
ack_listener_(nullptr) {
DCHECK_EQ(session()->connection(), spdy_session->connection());
- DCHECK_EQ(transport_version(),
- spdy_session->connection()->transport_version());
+ DCHECK_EQ(transport_version(), spdy_session->transport_version());
DCHECK(!QuicUtils::IsCryptoStreamId(transport_version(), id));
DCHECK_EQ(0u, sequencer()->NumBytesConsumed());
// If headers are sent on the headers stream, then do not receive any
@@ -234,8 +233,7 @@
is_decoder_processing_input_(false),
ack_listener_(nullptr) {
DCHECK_EQ(session()->connection(), spdy_session->connection());
- DCHECK_EQ(transport_version(),
- spdy_session->connection()->transport_version());
+ DCHECK_EQ(transport_version(), spdy_session->transport_version());
DCHECK(!QuicUtils::IsCryptoStreamId(transport_version(), id()));
// If headers are sent on the headers stream, then do not receive any
// callbacks from the sequencer until headers are complete.
@@ -983,8 +981,7 @@
void QuicSpdyStream::ProcessDecodedHeaders(const QuicHeaderList& headers) {
if (spdy_session_->promised_stream_id() ==
- QuicUtils::GetInvalidStreamId(
- session()->connection()->transport_version())) {
+ QuicUtils::GetInvalidStreamId(session()->transport_version())) {
const QuicByteCount frame_length = headers_decompressed_
? trailers_payload_length_
: headers_payload_length_;
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc
index e09cbf4..572ba5c 100644
--- a/quic/core/http/quic_spdy_stream_test.cc
+++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -1527,11 +1527,11 @@
SupportedVersions(GetParam()));
std::unique_ptr<TestMockUpdateStreamSession> session(
new StrictMock<TestMockUpdateStreamSession>(connection));
- auto stream = new StrictMock<TestStream>(
- GetNthClientInitiatedBidirectionalStreamId(
- session->connection()->transport_version(), 0),
- session.get(),
- /*should_process_data=*/true);
+ auto stream =
+ new StrictMock<TestStream>(GetNthClientInitiatedBidirectionalStreamId(
+ session->transport_version(), 0),
+ session.get(),
+ /*should_process_data=*/true);
session->ActivateStream(QuicWrapUnique(stream));
// QuicSpdyStream::SetPriority() should eventually call UpdateStreamPriority()
diff --git a/quic/core/legacy_quic_stream_id_manager.cc b/quic/core/legacy_quic_stream_id_manager.cc
index a7ec123..157e375 100644
--- a/quic/core/legacy_quic_stream_id_manager.cc
+++ b/quic/core/legacy_quic_stream_id_manager.cc
@@ -19,19 +19,17 @@
: session_(session),
max_open_outgoing_streams_(max_open_outgoing_streams),
max_open_incoming_streams_(max_open_incoming_streams),
- next_outgoing_stream_id_(QuicUtils::GetFirstBidirectionalStreamId(
- session->connection()->transport_version(),
- session->perspective())),
+ next_outgoing_stream_id_(
+ QuicUtils::GetFirstBidirectionalStreamId(session->transport_version(),
+ session->perspective())),
largest_peer_created_stream_id_(
session->perspective() == Perspective::IS_SERVER
- ? (QuicVersionUsesCryptoFrames(
- session->connection()->transport_version())
+ ? (QuicVersionUsesCryptoFrames(session->transport_version())
? QuicUtils::GetInvalidStreamId(
- session->connection()->transport_version())
+ session->transport_version())
: QuicUtils::GetCryptoStreamId(
- session->connection()->transport_version()))
- : QuicUtils::GetInvalidStreamId(
- session->connection()->transport_version())) {}
+ session->transport_version()))
+ : QuicUtils::GetInvalidStreamId(session->transport_version())) {}
LegacyQuicStreamIdManager::~LegacyQuicStreamIdManager() {
QUIC_LOG_IF(WARNING,
@@ -71,8 +69,7 @@
available_streams_.erase(stream_id);
if (largest_peer_created_stream_id_ !=
- QuicUtils::GetInvalidStreamId(
- session_->connection()->transport_version()) &&
+ QuicUtils::GetInvalidStreamId(session_->transport_version()) &&
stream_id <= largest_peer_created_stream_id_) {
return true;
}
@@ -83,8 +80,7 @@
size_t additional_available_streams =
(stream_id - largest_peer_created_stream_id_) / 2 - 1;
if (largest_peer_created_stream_id_ ==
- QuicUtils::GetInvalidStreamId(
- session_->connection()->transport_version())) {
+ QuicUtils::GetInvalidStreamId(session_->transport_version())) {
additional_available_streams = (stream_id + 1) / 2 - 1;
}
size_t new_num_available_streams =
@@ -105,10 +101,9 @@
}
QuicStreamId first_available_stream = largest_peer_created_stream_id_ + 2;
if (largest_peer_created_stream_id_ ==
- QuicUtils::GetInvalidStreamId(
- session_->connection()->transport_version())) {
+ QuicUtils::GetInvalidStreamId(session_->transport_version())) {
first_available_stream = QuicUtils::GetFirstBidirectionalStreamId(
- session_->connection()->transport_version(),
+ session_->transport_version(),
QuicUtils::InvertPerspective(session_->perspective()));
}
for (QuicStreamId id = first_available_stream; id < stream_id; id += 2) {
@@ -133,8 +128,7 @@
}
// For peer created streams, we also need to consider available streams.
return largest_peer_created_stream_id_ ==
- QuicUtils::GetInvalidStreamId(
- session_->connection()->transport_version()) ||
+ QuicUtils::GetInvalidStreamId(session_->transport_version()) ||
id > largest_peer_created_stream_id_ ||
QuicContainsKey(available_streams_, id);
}
diff --git a/quic/core/quic_crypto_client_handshaker.cc b/quic/core/quic_crypto_client_handshaker.cc
index ac15301..a8a479e 100644
--- a/quic/core/quic_crypto_client_handshaker.cc
+++ b/quic/core/quic_crypto_client_handshaker.cc
@@ -154,7 +154,7 @@
crypto_config_->LookupOrCreate(server_id_);
QuicErrorCode error = crypto_config_->ProcessServerConfigUpdate(
server_config_update, session()->connection()->clock()->WallNow(),
- session()->connection()->transport_version(), chlo_hash_, cached,
+ session()->transport_version(), chlo_hash_, cached,
crypto_negotiated_params_, &error_details);
if (error != QUIC_NO_ERROR) {
@@ -373,7 +373,7 @@
std::string error_details;
QuicErrorCode error = crypto_config_->ProcessRejection(
*in, session()->connection()->clock()->WallNow(),
- session()->connection()->transport_version(), chlo_hash_, cached,
+ session()->transport_version(), chlo_hash_, cached,
crypto_negotiated_params_, &error_details);
if (error != QUIC_NO_ERROR) {
@@ -409,7 +409,7 @@
QuicAsyncStatus status = verifier->VerifyProof(
server_id_.host(), server_id_.port(), cached->server_config(),
- session()->connection()->transport_version(), chlo_hash_, cached->certs(),
+ session()->transport_version(), chlo_hash_, cached->certs(),
cached->cert_sct(), cached->signature(), verify_context_.get(),
&verify_error_details_, &verify_details_,
std::unique_ptr<ProofVerifierCallback>(proof_verify_callback));
diff --git a/quic/core/quic_crypto_client_stream_test.cc b/quic/core/quic_crypto_client_stream_test.cc
index 12fc9a2..e9d0267 100644
--- a/quic/core/quic_crypto_client_stream_test.cc
+++ b/quic/core/quic_crypto_client_stream_test.cc
@@ -280,8 +280,8 @@
// Note: relies on the callback being invoked synchronously
bool ok = false;
crypto_config.BuildServerConfigUpdateMessage(
- session_->connection()->transport_version(), stream()->chlo_hash(),
- tokens, QuicSocketAddress(QuicIpAddress::Loopback6(), 1234),
+ session_->transport_version(), stream()->chlo_hash(), tokens,
+ QuicSocketAddress(QuicIpAddress::Loopback6(), 1234),
QuicIpAddress::Loopback6(), connection_->clock(),
QuicRandom::GetInstance(), &cache, stream()->crypto_negotiated_params(),
&network_params,
diff --git a/quic/core/quic_crypto_server_handshaker.cc b/quic/core/quic_crypto_server_handshaker.cc
index ab381d7..49e7209 100644
--- a/quic/core/quic_crypto_server_handshaker.cc
+++ b/quic/core/quic_crypto_server_handshaker.cc
@@ -258,7 +258,7 @@
send_server_config_update_cb_ = cb.get();
crypto_config_->BuildServerConfigUpdateMessage(
- session()->connection()->transport_version(), chlo_hash_,
+ session()->transport_version(), chlo_hash_,
previous_source_address_tokens_, session()->connection()->self_address(),
GetClientAddress().host(), session()->connection()->clock(),
session()->connection()->random_generator(), compressed_certs_cache_,
diff --git a/quic/core/quic_crypto_server_handshaker.h b/quic/core/quic_crypto_server_handshaker.h
index 4b7b3ba..b24e9e9 100644
--- a/quic/core/quic_crypto_server_handshaker.h
+++ b/quic/core/quic_crypto_server_handshaker.h
@@ -155,7 +155,7 @@
// Returns the QuicTransportVersion of the connection.
QuicTransportVersion transport_version() const {
- return session_->connection()->transport_version();
+ return session_->transport_version();
}
QuicCryptoServerStream* stream_;
diff --git a/quic/core/quic_crypto_stream.cc b/quic/core/quic_crypto_stream.cc
index e5b13f1..e1ee5bf 100644
--- a/quic/core/quic_crypto_stream.cc
+++ b/quic/core/quic_crypto_stream.cc
@@ -24,18 +24,15 @@
" ")
QuicCryptoStream::QuicCryptoStream(QuicSession* session)
- : QuicStream(QuicVersionUsesCryptoFrames(
- session->connection()->transport_version())
- ? QuicUtils::GetInvalidStreamId(
- session->connection()->transport_version())
- : QuicUtils::GetCryptoStreamId(
- session->connection()->transport_version()),
- session,
- /*is_static=*/true,
- QuicVersionUsesCryptoFrames(
- session->connection()->transport_version())
- ? CRYPTO
- : BIDIRECTIONAL),
+ : QuicStream(
+ QuicVersionUsesCryptoFrames(session->transport_version())
+ ? QuicUtils::GetInvalidStreamId(session->transport_version())
+ : QuicUtils::GetCryptoStreamId(session->transport_version()),
+ session,
+ /*is_static=*/true,
+ QuicVersionUsesCryptoFrames(session->transport_version())
+ ? CRYPTO
+ : BIDIRECTIONAL),
substreams_{{this, ENCRYPTION_INITIAL},
{this, ENCRYPTION_HANDSHAKE},
{this, ENCRYPTION_ZERO_RTT},
@@ -73,8 +70,7 @@
}
void QuicCryptoStream::OnCryptoFrame(const QuicCryptoFrame& frame) {
- QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version()))
+ QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(session()->transport_version()))
<< "Versions less than 47 shouldn't receive CRYPTO frames";
EncryptionLevel level = session()->connection()->last_decrypted_level();
substreams_[level].sequencer.OnCryptoFrame(frame);
@@ -86,8 +82,7 @@
}
void QuicCryptoStream::OnStreamFrame(const QuicStreamFrame& frame) {
- if (QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version())) {
+ if (QuicVersionUsesCryptoFrames(session()->transport_version())) {
QUIC_PEER_BUG
<< "Crypto data received in stream frame instead of crypto frame";
CloseConnectionWithDetails(QUIC_INVALID_STREAM_DATA,
@@ -98,8 +93,7 @@
void QuicCryptoStream::OnDataAvailable() {
EncryptionLevel level = session()->connection()->last_decrypted_level();
- if (!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version())) {
+ if (!QuicVersionUsesCryptoFrames(session()->transport_version())) {
// Versions less than 47 only support QUIC crypto, which ignores the
// EncryptionLevel passed into CryptoMessageParser::ProcessInput (and
// OnDataAvailableInSequencer).
@@ -147,8 +141,7 @@
void QuicCryptoStream::WriteCryptoData(EncryptionLevel level,
QuicStringPiece data) {
- if (!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version())) {
+ if (!QuicVersionUsesCryptoFrames(session()->transport_version())) {
// The QUIC crypto handshake takes care of setting the appropriate
// encryption level before writing data. Since that is the only handshake
// supported in versions less than 47, |level| can be ignored here.
@@ -206,8 +199,7 @@
}
void QuicCryptoStream::NeuterUnencryptedStreamData() {
- if (!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version())) {
+ if (!QuicVersionUsesCryptoFrames(session()->transport_version())) {
for (const auto& interval : bytes_consumed_[ENCRYPTION_INITIAL]) {
QuicByteCount newly_acked_length = 0;
send_buffer().OnStreamDataAcked(
@@ -229,8 +221,7 @@
}
void QuicCryptoStream::OnStreamDataConsumed(size_t bytes_consumed) {
- if (QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version())) {
+ if (QuicVersionUsesCryptoFrames(session()->transport_version())) {
QUIC_BUG << "Stream data consumed when CRYPTO frames should be in use";
}
if (bytes_consumed > 0) {
@@ -241,8 +232,7 @@
}
bool QuicCryptoStream::HasPendingCryptoRetransmission() const {
- if (!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version())) {
+ if (!QuicVersionUsesCryptoFrames(session()->transport_version())) {
return false;
}
for (EncryptionLevel level :
@@ -255,8 +245,7 @@
}
void QuicCryptoStream::WritePendingCryptoRetransmission() {
- QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version()))
+ QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(session()->transport_version()))
<< "Versions less than 47 don't write CRYPTO frames";
EncryptionLevel current_encryption_level =
session()->connection()->encryption_level();
@@ -364,8 +353,7 @@
}
uint64_t QuicCryptoStream::crypto_bytes_read() const {
- if (!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version())) {
+ if (!QuicVersionUsesCryptoFrames(session()->transport_version())) {
return stream_bytes_read();
}
return substreams_[ENCRYPTION_INITIAL].sequencer.NumBytesConsumed() +
@@ -381,24 +369,21 @@
QuicStreamOffset offset,
QuicByteCount data_length,
QuicDataWriter* writer) {
- QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version()))
+ QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(session()->transport_version()))
<< "Versions less than 47 don't write CRYPTO frames (2)";
return substreams_[level].send_buffer.WriteStreamData(offset, data_length,
writer);
}
void QuicCryptoStream::OnCryptoFrameLost(QuicCryptoFrame* crypto_frame) {
- QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version()))
+ QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(session()->transport_version()))
<< "Versions less than 47 don't lose CRYPTO frames";
substreams_[crypto_frame->level].send_buffer.OnStreamDataLost(
crypto_frame->offset, crypto_frame->data_length);
}
void QuicCryptoStream::RetransmitData(QuicCryptoFrame* crypto_frame) {
- QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version()))
+ QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(session()->transport_version()))
<< "Versions less than 47 don't retransmit CRYPTO frames";
QuicIntervalSet<QuicStreamOffset> retransmission(
crypto_frame->offset, crypto_frame->offset + crypto_frame->data_length);
@@ -423,8 +408,7 @@
}
void QuicCryptoStream::WriteBufferedCryptoFrames() {
- QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version()))
+ QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(session()->transport_version()))
<< "Versions less than 47 don't use CRYPTO frames";
EncryptionLevel current_encryption_level =
session()->connection()->encryption_level();
@@ -450,8 +434,7 @@
}
bool QuicCryptoStream::HasBufferedCryptoFrames() const {
- QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version()))
+ QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(session()->transport_version()))
<< "Versions less than 47 don't use CRYPTO frames";
for (EncryptionLevel level :
{ENCRYPTION_INITIAL, ENCRYPTION_ZERO_RTT, ENCRYPTION_FORWARD_SECURE}) {
@@ -467,8 +450,7 @@
bool QuicCryptoStream::IsFrameOutstanding(EncryptionLevel level,
size_t offset,
size_t length) const {
- if (!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version())) {
+ if (!QuicVersionUsesCryptoFrames(session()->transport_version())) {
// This only happens if a client was originally configured for a version
// greater than 45, but received a version negotiation packet and is
// attempting to retransmit for a version less than 47. Outside of tests,
@@ -481,8 +463,7 @@
}
bool QuicCryptoStream::IsWaitingForAcks() const {
- if (!QuicVersionUsesCryptoFrames(
- session()->connection()->transport_version())) {
+ if (!QuicVersionUsesCryptoFrames(session()->transport_version())) {
return QuicStream::IsWaitingForAcks();
}
for (EncryptionLevel level :
diff --git a/quic/core/quic_flow_controller.cc b/quic/core/quic_flow_controller.cc
index dbc5100..40f18a3 100644
--- a/quic/core/quic_flow_controller.cc
+++ b/quic/core/quic_flow_controller.cc
@@ -54,9 +54,9 @@
last_blocked_send_window_offset_(0),
prev_window_update_time_(QuicTime::Zero()) {
DCHECK_LE(receive_window_size_, receive_window_size_limit_);
- DCHECK_EQ(is_connection_flow_controller_,
- QuicUtils::GetInvalidStreamId(
- session_->connection()->transport_version()) == id_);
+ DCHECK_EQ(
+ is_connection_flow_controller_,
+ QuicUtils::GetInvalidStreamId(session_->transport_version()) == id_);
QUIC_DVLOG(1) << ENDPOINT << "Created flow controller for " << LogLabel()
<< ", setting initial receive window offset to: "
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc
index 464c4f5..eb8ee80 100644
--- a/quic/core/quic_session.cc
+++ b/quic/core/quic_session.cc
@@ -110,11 +110,11 @@
connection_->SetDataProducer(this);
connection_->SetFromConfig(config_);
- if (QuicVersionUsesCryptoFrames(connection_->transport_version())) {
+ if (QuicVersionUsesCryptoFrames(transport_version())) {
return;
}
- DCHECK_EQ(QuicUtils::GetCryptoStreamId(connection_->transport_version()),
+ DCHECK_EQ(QuicUtils::GetCryptoStreamId(transport_version()),
GetMutableCryptoStream()->id());
}
@@ -141,7 +141,7 @@
}
void QuicSession::PendingStreamOnStreamFrame(const QuicStreamFrame& frame) {
- DCHECK(VersionHasStreamType(connection()->transport_version()));
+ DCHECK(VersionHasStreamType(transport_version()));
QuicStreamId stream_id = frame.stream_id;
PendingStream* pending = GetOrCreatePendingStream(stream_id);
@@ -173,8 +173,7 @@
void QuicSession::OnStreamFrame(const QuicStreamFrame& frame) {
// TODO(rch) deal with the error case of stream id 0.
QuicStreamId stream_id = frame.stream_id;
- if (stream_id ==
- QuicUtils::GetInvalidStreamId(connection()->transport_version())) {
+ if (stream_id == QuicUtils::GetInvalidStreamId(transport_version())) {
connection()->CloseConnection(
QUIC_INVALID_STREAM_ID, "Received data for an invalid stream",
ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
@@ -220,12 +219,11 @@
// could not call OnStopSending... This is just a check that is good when
// both a new protocol and a new implementation of that protocol are both
// being developed.
- DCHECK(VersionHasIetfQuicFrames(connection_->transport_version()));
+ DCHECK(VersionHasIetfQuicFrames(transport_version()));
QuicStreamId stream_id = frame.stream_id;
// If Stream ID is invalid then close the connection.
- if (stream_id ==
- QuicUtils::GetInvalidStreamId(connection()->transport_version())) {
+ if (stream_id == QuicUtils::GetInvalidStreamId(transport_version())) {
QUIC_DVLOG(1) << ENDPOINT
<< "Received STOP_SENDING with invalid stream_id: "
<< stream_id << " Closing connection";
@@ -239,8 +237,7 @@
// TODO(fkastenholz): IETF Quic does not have static streams and does not
// make exceptions for them with respect to processing things like
// STOP_SENDING.
- if (QuicUtils::IsCryptoStreamId(connection_->transport_version(),
- stream_id)) {
+ if (QuicUtils::IsCryptoStreamId(transport_version(), stream_id)) {
QUIC_DVLOG(1) << ENDPOINT
<< "Received STOP_SENDING for a static stream, id: "
<< stream_id << " Closing connection";
@@ -312,7 +309,7 @@
}
void QuicSession::PendingStreamOnRstStream(const QuicRstStreamFrame& frame) {
- DCHECK(VersionHasStreamType(connection()->transport_version()));
+ DCHECK(VersionHasStreamType(transport_version()));
QuicStreamId stream_id = frame.stream_id;
PendingStream* pending = GetOrCreatePendingStream(stream_id);
@@ -329,8 +326,7 @@
void QuicSession::OnRstStream(const QuicRstStreamFrame& frame) {
QuicStreamId stream_id = frame.stream_id;
- if (stream_id ==
- QuicUtils::GetInvalidStreamId(connection()->transport_version())) {
+ if (stream_id == QuicUtils::GetInvalidStreamId(transport_version())) {
connection()->CloseConnection(
QUIC_INVALID_STREAM_ID, "Received data for an invalid stream",
ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
@@ -471,8 +467,7 @@
// Stream may be closed by the time we receive a WINDOW_UPDATE, so we can't
// assume that it still exists.
QuicStreamId stream_id = frame.stream_id;
- if (stream_id ==
- QuicUtils::GetInvalidStreamId(connection_->transport_version())) {
+ if (stream_id == QuicUtils::GetInvalidStreamId(transport_version())) {
// This is a window update that applies to the connection, rather than an
// individual stream.
QUIC_DVLOG(1) << ENDPOINT
@@ -483,7 +478,7 @@
return;
}
- if (VersionHasIetfQuicFrames(connection_->transport_version()) &&
+ if (VersionHasIetfQuicFrames(transport_version()) &&
QuicUtils::GetStreamType(stream_id, perspective(),
IsIncomingStream(stream_id)) ==
READ_UNIDIRECTIONAL) {
@@ -574,13 +569,13 @@
? write_blocked_streams_.NumBlockedSpecialStreams()
: write_blocked_streams_.NumBlockedStreams();
if (num_writes == 0 && !control_frame_manager_.WillingToWrite() &&
- (!QuicVersionUsesCryptoFrames(connection_->transport_version()) ||
+ (!QuicVersionUsesCryptoFrames(transport_version()) ||
!GetCryptoStream()->HasBufferedCryptoFrames())) {
return;
}
QuicConnection::ScopedPacketFlusher flusher(connection_);
- if (QuicVersionUsesCryptoFrames(connection_->transport_version())) {
+ if (QuicVersionUsesCryptoFrames(transport_version())) {
QuicCryptoStream* crypto_stream = GetMutableCryptoStream();
if (crypto_stream->HasBufferedCryptoFrames()) {
crypto_stream->WriteBufferedCryptoFrames();
@@ -640,7 +635,7 @@
// 3) If the crypto or headers streams are blocked, or
// 4) connection is not flow control blocked and there are write blocked
// streams.
- if (QuicVersionUsesCryptoFrames(connection_->transport_version()) &&
+ if (QuicVersionUsesCryptoFrames(transport_version()) &&
HasPendingHandshake()) {
return true;
}
@@ -652,15 +647,14 @@
}
bool QuicSession::HasPendingHandshake() const {
- if (QuicVersionUsesCryptoFrames(connection_->transport_version())) {
+ if (QuicVersionUsesCryptoFrames(transport_version())) {
return GetCryptoStream()->HasPendingCryptoRetransmission() ||
GetCryptoStream()->HasBufferedCryptoFrames();
}
- return QuicContainsKey(
- streams_with_pending_retransmission_,
- QuicUtils::GetCryptoStreamId(connection_->transport_version())) ||
+ return QuicContainsKey(streams_with_pending_retransmission_,
+ QuicUtils::GetCryptoStreamId(transport_version())) ||
write_blocked_streams_.IsStreamBlocked(
- QuicUtils::GetCryptoStreamId(connection_->transport_version()));
+ QuicUtils::GetCryptoStreamId(transport_version()));
}
uint64_t QuicSession::GetNumOpenDynamicStreams() const {
@@ -685,7 +679,7 @@
// it might end up resulting in unencrypted stream data being sent.
// While this is impossible to avoid given sufficient corruption, this
// seems like a reasonable mitigation.
- if (QuicUtils::IsCryptoStreamId(connection_->transport_version(), id) &&
+ if (QuicUtils::IsCryptoStreamId(transport_version(), id) &&
stream != GetMutableCryptoStream()) {
QUIC_BUG << "Stream id mismatch";
connection_->CloseConnection(
@@ -695,7 +689,7 @@
return QuicConsumedData(0, false);
}
if (!IsEncryptionEstablished() &&
- !QuicUtils::IsCryptoStreamId(connection_->transport_version(), id)) {
+ !QuicUtils::IsCryptoStreamId(transport_version(), id)) {
// Do not let streams write without encryption. The calling stream will end
// up write blocked until OnCanWrite is next called.
return QuicConsumedData(0, false);
@@ -727,14 +721,14 @@
if (connection()->connected()) {
// Only send if still connected.
if (close_write_side_only) {
- DCHECK(VersionHasIetfQuicFrames(connection_->transport_version()));
+ DCHECK(VersionHasIetfQuicFrames(transport_version()));
// Send a RST_STREAM frame.
control_frame_manager_.WriteOrBufferRstStream(id, error, bytes_written);
} else {
// Send a RST_STREAM frame plus, if version 99, an IETF
// QUIC STOP_SENDING frame. Both sre sent to emulate
// the two-way close that Google QUIC's RST_STREAM does.
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
QuicConnection::ScopedPacketFlusher flusher(connection());
control_frame_manager_.WriteOrBufferRstStream(id, error, bytes_written);
control_frame_manager_.WriteOrBufferStopSending(error, id);
@@ -753,7 +747,7 @@
CloseStreamInner(id, true);
return;
}
- DCHECK(VersionHasIetfQuicFrames(connection_->transport_version()));
+ DCHECK(VersionHasIetfQuicFrames(transport_version()));
StreamMap::iterator it = stream_map_.find(id);
if (it != stream_map_.end()) {
@@ -777,7 +771,7 @@
void QuicSession::SendGoAway(QuicErrorCode error_code,
const std::string& reason) {
// GOAWAY frame is not supported in v99.
- DCHECK(!VersionHasIetfQuicFrames(connection_->transport_version()));
+ DCHECK(!VersionHasIetfQuicFrames(transport_version()));
if (goaway_sent_) {
return;
}
@@ -886,7 +880,7 @@
--num_draining_incoming_streams_;
}
draining_streams_.erase(stream_id);
- } else if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ } else if (VersionHasIetfQuicFrames(transport_version())) {
// Stream was not draining, but we did have a fin or rst, so we can now
// free the stream ID if version 99.
if (had_fin_or_rst) {
@@ -897,7 +891,7 @@
stream->OnClose();
if (!stream_was_draining && !IsIncomingStream(stream_id) && had_fin_or_rst &&
- !VersionHasIetfQuicFrames(connection_->transport_version())) {
+ !VersionHasIetfQuicFrames(transport_version())) {
// Streams that first became draining already called OnCanCreate...
// This covers the case where the stream went directly to being closed.
OnCanCreateNewOutgoingStream(type != BIDIRECTIONAL);
@@ -908,7 +902,7 @@
QUIC_DVLOG(1) << ENDPOINT << "Closing stream " << stream_id;
pending_stream_map_.erase(stream_id);
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
v99_streamid_manager_.OnStreamClosed(stream_id);
}
}
@@ -940,10 +934,10 @@
locally_closed_streams_highest_offset_.erase(it);
if (IsIncomingStream(stream_id)) {
--num_locally_closed_incoming_streams_highest_offset_;
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
v99_streamid_manager_.OnStreamClosed(stream_id);
}
- } else if (!VersionHasIetfQuicFrames(connection_->transport_version())) {
+ } else if (!VersionHasIetfQuicFrames(transport_version())) {
OnCanCreateNewOutgoingStream(false);
}
}
@@ -1009,26 +1003,23 @@
}
if (GetQuicReloadableFlag(quic_use_http2_priority_write_scheduler) &&
ContainsQuicTag(config_.ReceivedConnectionOptions(), kH2PR) &&
- !VersionHasIetfQuicFrames(connection_->transport_version())) {
+ !VersionHasIetfQuicFrames(transport_version())) {
// Enable HTTP2 (tree-style) priority write scheduler.
use_http2_priority_write_scheduler_ =
write_blocked_streams_.SwitchWriteScheduler(
- spdy::WriteSchedulerType::HTTP2,
- connection_->transport_version());
+ spdy::WriteSchedulerType::HTTP2, transport_version());
} else if (GetQuicReloadableFlag(quic_enable_fifo_write_scheduler) &&
ContainsQuicTag(config_.ReceivedConnectionOptions(), kFIFO)) {
// Enable FIFO write scheduler.
if (write_blocked_streams_.SwitchWriteScheduler(
- spdy::WriteSchedulerType::FIFO,
- connection_->transport_version())) {
+ spdy::WriteSchedulerType::FIFO, transport_version())) {
QUIC_RELOADABLE_FLAG_COUNT(quic_enable_fifo_write_scheduler);
}
} else if (GetQuicReloadableFlag(quic_enable_lifo_write_scheduler) &&
ContainsQuicTag(config_.ReceivedConnectionOptions(), kLIFO)) {
// Enable LIFO write scheduler.
if (write_blocked_streams_.SwitchWriteScheduler(
- spdy::WriteSchedulerType::LIFO,
- connection_->transport_version())) {
+ spdy::WriteSchedulerType::LIFO, transport_version())) {
QUIC_RELOADABLE_FLAG_COUNT(quic_enable_lifo_write_scheduler);
}
}
@@ -1037,7 +1028,7 @@
config_.SetStatelessResetTokenToSend(GetStatelessResetToken());
}
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
v99_streamid_manager_.SetMaxOpenIncomingBidirectionalStreams(
config_.GetMaxIncomingBidirectionalStreamsToSend());
v99_streamid_manager_.SetMaxOpenIncomingUnidirectionalStreams(
@@ -1090,7 +1081,7 @@
for (auto const& kv : stream_map_) {
kv.second->flow_controller()->UpdateReceiveWindowSize(stream_window);
}
- if (!QuicVersionUsesCryptoFrames(connection_->transport_version())) {
+ if (!QuicVersionUsesCryptoFrames(transport_version())) {
GetMutableCryptoStream()->flow_controller()->UpdateReceiveWindowSize(
stream_window);
}
@@ -1134,7 +1125,7 @@
for (auto const& kv : stream_map_) {
kv.second->UpdateSendWindowOffset(new_window);
}
- if (!QuicVersionUsesCryptoFrames(connection_->transport_version())) {
+ if (!QuicVersionUsesCryptoFrames(transport_version())) {
GetMutableCryptoStream()->UpdateSendWindowOffset(new_window);
}
}
@@ -1218,21 +1209,21 @@
}
QuicStreamId QuicSession::GetNextOutgoingBidirectionalStreamId() {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.GetNextOutgoingBidirectionalStreamId();
}
return stream_id_manager_.GetNextOutgoingStreamId();
}
QuicStreamId QuicSession::GetNextOutgoingUnidirectionalStreamId() {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.GetNextOutgoingUnidirectionalStreamId();
}
return stream_id_manager_.GetNextOutgoingStreamId();
}
bool QuicSession::CanOpenNextOutgoingBidirectionalStream() {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.CanOpenNextOutgoingBidirectionalStream();
}
return stream_id_manager_.CanOpenNextOutgoingStream(
@@ -1240,7 +1231,7 @@
}
bool QuicSession::CanOpenNextOutgoingUnidirectionalStream() {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.CanOpenNextOutgoingUnidirectionalStream();
}
return stream_id_manager_.CanOpenNextOutgoingStream(
@@ -1249,8 +1240,7 @@
QuicStream* QuicSession::GetOrCreateStream(const QuicStreamId stream_id) {
DCHECK(!QuicContainsKey(pending_stream_map_, stream_id));
- if (QuicUtils::IsCryptoStreamId(connection_->transport_version(),
- stream_id)) {
+ if (QuicUtils::IsCryptoStreamId(transport_version(), stream_id)) {
return GetMutableCryptoStream();
}
@@ -1277,7 +1267,7 @@
return nullptr;
}
- if (!VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (!VersionHasIetfQuicFrames(transport_version())) {
// TODO(fayang): Let LegacyQuicStreamIdManager count open streams and make
// CanOpenIncomingStream interface consistent with that of v99.
if (!stream_id_manager_.CanOpenIncomingStream(
@@ -1298,13 +1288,13 @@
if (IsIncomingStream(stream_id)) {
++num_draining_incoming_streams_;
}
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
v99_streamid_manager_.OnStreamClosed(stream_id);
}
}
if (!IsIncomingStream(stream_id)) {
// Inform application that a stream is available.
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
OnCanCreateNewOutgoingStream(
!QuicUtils::IsBidirectionalStreamId(stream_id));
} else {
@@ -1320,7 +1310,7 @@
bool QuicSession::MaybeIncreaseLargestPeerStreamId(
const QuicStreamId stream_id) {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.MaybeIncreaseLargestPeerStreamId(stream_id);
}
return stream_id_manager_.MaybeIncreaseLargestPeerStreamId(stream_id);
@@ -1377,7 +1367,7 @@
return nullptr;
}
- if (!VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (!VersionHasIetfQuicFrames(transport_version())) {
// TODO(fayang): Let LegacyQuicStreamIdManager count open streams and make
// CanOpenIncomingStream interface cosistent with that of v99.
if (!stream_id_manager_.CanOpenIncomingStream(
@@ -1393,7 +1383,7 @@
void QuicSession::set_largest_peer_created_stream_id(
QuicStreamId largest_peer_created_stream_id) {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
v99_streamid_manager_.SetLargestPeerCreatedStreamId(
largest_peer_created_stream_id);
return;
@@ -1403,14 +1393,13 @@
}
bool QuicSession::IsClosedStream(QuicStreamId id) {
- DCHECK_NE(QuicUtils::GetInvalidStreamId(connection_->transport_version()),
- id);
+ DCHECK_NE(QuicUtils::GetInvalidStreamId(transport_version()), id);
if (IsOpenStream(id)) {
// Stream is active
return false;
}
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return !v99_streamid_manager_.IsAvailableStream(id);
}
@@ -1418,11 +1407,10 @@
}
bool QuicSession::IsOpenStream(QuicStreamId id) {
- DCHECK_NE(QuicUtils::GetInvalidStreamId(connection_->transport_version()),
- id);
+ DCHECK_NE(QuicUtils::GetInvalidStreamId(transport_version()), id);
if (QuicContainsKey(stream_map_, id) ||
QuicContainsKey(pending_stream_map_, id) ||
- QuicUtils::IsCryptoStreamId(connection_->transport_version(), id)) {
+ QuicUtils::IsCryptoStreamId(transport_version(), id)) {
// Stream is active
return true;
}
@@ -1517,7 +1505,7 @@
return true;
}
}
- if (!QuicVersionUsesCryptoFrames(connection_->transport_version()) &&
+ if (!QuicVersionUsesCryptoFrames(transport_version()) &&
GetMutableCryptoStream()->flow_controller()->IsBlocked()) {
return true;
}
@@ -1525,21 +1513,21 @@
}
size_t QuicSession::MaxAvailableBidirectionalStreams() const {
- if (VersionHasIetfQuicFrames(connection()->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.GetMaxAllowdIncomingBidirectionalStreams();
}
return stream_id_manager_.MaxAvailableStreams();
}
size_t QuicSession::MaxAvailableUnidirectionalStreams() const {
- if (VersionHasIetfQuicFrames(connection()->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.GetMaxAllowdIncomingUnidirectionalStreams();
}
return stream_id_manager_.MaxAvailableStreams();
}
bool QuicSession::IsIncomingStream(QuicStreamId id) const {
- if (VersionHasIetfQuicFrames(connection()->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.IsIncomingStream(id);
}
return stream_id_manager_.IsIncomingStream(id);
@@ -1603,7 +1591,7 @@
return zombie_stream->second.get();
}
- if (QuicUtils::IsCryptoStreamId(connection_->transport_version(), id)) {
+ if (QuicUtils::IsCryptoStreamId(transport_version(), id)) {
return const_cast<QuicCryptoStream*>(GetCryptoStream());
}
@@ -1754,7 +1742,7 @@
// This causes the connection to be closed because of failed to serialize
// packet.
QUIC_BUG << "Stream " << id << " does not exist when trying to write data."
- << " version:" << connection_->transport_version();
+ << " version:" << transport_version();
return STREAM_MISSING;
}
if (stream->WriteStreamData(offset, data_length, writer)) {
@@ -1778,8 +1766,7 @@
bool QuicSession::RetransmitLostData() {
QuicConnection::ScopedPacketFlusher retransmission_flusher(connection_);
// Retransmit crypto data first.
- bool uses_crypto_frames =
- QuicVersionUsesCryptoFrames(connection_->transport_version());
+ bool uses_crypto_frames = QuicVersionUsesCryptoFrames(transport_version());
QuicCryptoStream* crypto_stream = GetMutableCryptoStream();
if (uses_crypto_frames && crypto_stream->HasPendingCryptoRetransmission()) {
SetTransmissionType(HANDSHAKE_RETRANSMISSION);
@@ -1787,13 +1774,12 @@
}
// Retransmit crypto data in stream 1 frames (version < 47).
if (!uses_crypto_frames &&
- QuicContainsKey(
- streams_with_pending_retransmission_,
- QuicUtils::GetCryptoStreamId(connection_->transport_version()))) {
+ QuicContainsKey(streams_with_pending_retransmission_,
+ QuicUtils::GetCryptoStreamId(transport_version()))) {
SetTransmissionType(HANDSHAKE_RETRANSMISSION);
// Retransmit crypto data first.
- QuicStream* crypto_stream = GetStream(
- QuicUtils::GetCryptoStreamId(connection_->transport_version()));
+ QuicStream* crypto_stream =
+ GetStream(QuicUtils::GetCryptoStreamId(transport_version()));
crypto_stream->OnCanWrite();
DCHECK(CheckStreamWriteBlocked(crypto_stream));
if (crypto_stream->HasPendingRetransmission()) {
@@ -1801,7 +1787,7 @@
return false;
} else {
streams_with_pending_retransmission_.erase(
- QuicUtils::GetCryptoStreamId(connection_->transport_version()));
+ QuicUtils::GetCryptoStreamId(transport_version()));
}
}
if (control_frame_manager_.HasPendingRetransmission()) {
@@ -1846,9 +1832,9 @@
QuicCryptoStream* crypto_stream = GetMutableCryptoStream();
crypto_stream->NeuterUnencryptedStreamData();
if (!crypto_stream->HasPendingRetransmission() &&
- !QuicVersionUsesCryptoFrames(connection_->transport_version())) {
+ !QuicVersionUsesCryptoFrames(transport_version())) {
streams_with_pending_retransmission_.erase(
- QuicUtils::GetCryptoStreamId(connection_->transport_version()));
+ QuicUtils::GetCryptoStreamId(transport_version()));
}
}
connection_->NeuterUnencryptedPackets();
@@ -1903,14 +1889,14 @@
void QuicSession::OnCanCreateNewOutgoingStream(bool /*unidirectional*/) {}
QuicStreamId QuicSession::next_outgoing_bidirectional_stream_id() const {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.next_outgoing_bidirectional_stream_id();
}
return stream_id_manager_.next_outgoing_stream_id();
}
QuicStreamId QuicSession::next_outgoing_unidirectional_stream_id() const {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.next_outgoing_unidirectional_stream_id();
}
return stream_id_manager_.next_outgoing_stream_id();
@@ -1925,14 +1911,14 @@
}
size_t QuicSession::max_open_incoming_bidirectional_streams() const {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.GetMaxAllowdIncomingBidirectionalStreams();
}
return stream_id_manager_.max_open_incoming_streams();
}
size_t QuicSession::max_open_incoming_unidirectional_streams() const {
- if (VersionHasIetfQuicFrames(connection_->transport_version())) {
+ if (VersionHasIetfQuicFrames(transport_version())) {
return v99_streamid_manager_.GetMaxAllowdIncomingUnidirectionalStreams();
}
return stream_id_manager_.max_open_incoming_streams();
diff --git a/quic/core/quic_session_test.cc b/quic/core/quic_session_test.cc
index 7480eee..eafb0bd 100644
--- a/quic/core/quic_session_test.cc
+++ b/quic/core/quic_session_test.cc
@@ -69,8 +69,8 @@
kInitialStreamFlowControlWindowForTest);
session()->config()->SetInitialSessionFlowControlWindowToSend(
kInitialSessionFlowControlWindowForTest);
- session()->config()->ToHandshakeMessage(
- &msg, session()->connection()->transport_version());
+ session()->config()->ToHandshakeMessage(&msg,
+ session()->transport_version());
const QuicErrorCode error =
session()->config()->ProcessPeerHello(msg, CLIENT, &error_details);
EXPECT_EQ(QUIC_NO_ERROR, error);
@@ -362,7 +362,7 @@
}
void CloseStream(QuicStreamId id) {
- if (VersionHasIetfQuicFrames(session_.connection()->transport_version()) &&
+ if (VersionHasIetfQuicFrames(session_.transport_version()) &&
QuicUtils::GetStreamType(id, session_.perspective(),
session_.IsIncomingStream(id)) ==
READ_UNIDIRECTIONAL) {
@@ -371,8 +371,7 @@
EXPECT_CALL(*connection_, OnStreamReset(_, _)).Times(0);
} else {
// Verify reset IS sent for BIDIRECTIONAL streams.
- if (VersionHasIetfQuicFrames(
- session_.connection()->transport_version())) {
+ if (VersionHasIetfQuicFrames(session_.transport_version())) {
// Once for the RST_STREAM, Once for the STOP_SENDING
EXPECT_CALL(*connection_, SendControlFrame(_))
.Times(2)
diff --git a/quic/core/quic_stream.cc b/quic/core/quic_stream.cc
index eb8b96b..c08688b 100644
--- a/quic/core/quic_stream.cc
+++ b/quic/core/quic_stream.cc
@@ -270,8 +270,7 @@
buffered_data_threshold_(GetQuicFlag(FLAGS_quic_buffered_data_threshold)),
is_static_(is_static),
deadline_(QuicTime::Zero()),
- type_(VersionHasIetfQuicFrames(
- session->connection()->transport_version()) &&
+ type_(VersionHasIetfQuicFrames(session->transport_version()) &&
type != CRYPTO
? QuicUtils::GetStreamType(id_,
perspective_,
@@ -701,7 +700,7 @@
}
QuicTransportVersion QuicStream::transport_version() const {
- return session_->connection()->transport_version();
+ return session_->transport_version();
}
HandshakeProtocol QuicStream::handshake_protocol() const {
diff --git a/quic/core/quic_stream_id_manager.cc b/quic/core/quic_stream_id_manager.cc
index f856ab0..c400d77 100644
--- a/quic/core/quic_stream_id_manager.cc
+++ b/quic/core/quic_stream_id_manager.cc
@@ -328,7 +328,7 @@
}
QuicTransportVersion QuicStreamIdManager::transport_version() const {
- return session_->connection()->transport_version();
+ return session_->transport_version();
}
size_t QuicStreamIdManager::available_incoming_streams() {
diff --git a/quic/core/quic_stream_id_manager_test.cc b/quic/core/quic_stream_id_manager_test.cc
index 19e4d59..d8e1b78 100644
--- a/quic/core/quic_stream_id_manager_test.cc
+++ b/quic/core/quic_stream_id_manager_test.cc
@@ -62,8 +62,7 @@
TestQuicStream* CreateIncomingStream(QuicStreamId id) override {
TestQuicStream* stream = new TestQuicStream(
id, this,
- DetermineStreamType(id, connection()->transport_version(),
- perspective(),
+ DetermineStreamType(id, transport_version(), perspective(),
/*is_incoming=*/true, BIDIRECTIONAL));
ActivateStream(QuicWrapUnique(stream));
return stream;