Index: net/quic/core/quic_session.cc |
diff --git a/net/quic/core/quic_session.cc b/net/quic/core/quic_session.cc |
index 453d3b78473ba828130c92403ee1d86b7b49b9a0..9508fe39524d94d1f6603cf49a52a2503eccc917 100644 |
--- a/net/quic/core/quic_session.cc |
+++ b/net/quic/core/quic_session.cc |
@@ -8,9 +8,9 @@ |
#include <utility> |
#include "net/quic/core/quic_connection.h" |
-#include "net/quic/core/quic_flags.h" |
#include "net/quic/core/quic_flow_controller.h" |
#include "net/quic/platform/api/quic_bug_tracker.h" |
+#include "net/quic/platform/api/quic_flags.h" |
#include "net/quic/platform/api/quic_logging.h" |
#include "net/quic/platform/api/quic_map_util.h" |
#include "net/quic/platform/api/quic_str_cat.h" |
@@ -50,8 +50,8 @@ void QuicSession::Initialize() { |
connection_->set_visitor(this); |
connection_->SetFromConfig(config_); |
- DCHECK_EQ(kCryptoStreamId, GetCryptoStream()->id()); |
- static_stream_map_[kCryptoStreamId] = GetCryptoStream(); |
+ DCHECK_EQ(kCryptoStreamId, GetMutableCryptoStream()->id()); |
+ static_stream_map_[kCryptoStreamId] = GetMutableCryptoStream(); |
} |
QuicSession::~QuicSession() { |
@@ -288,14 +288,14 @@ QuicConsumedData QuicSession::WritevData( |
QuicStreamId id, |
QuicIOVector iov, |
QuicStreamOffset offset, |
- bool fin, |
+ StreamSendingState state, |
QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) { |
// This check is an attempt to deal with potential memory corruption |
// in which |id| ends up set to 1 (the crypto stream id). If this happen |
// 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 (id == kCryptoStreamId && stream != GetCryptoStream()) { |
+ if (id == kCryptoStreamId && stream != GetMutableCryptoStream()) { |
QUIC_BUG << "Stream id mismatch"; |
connection_->CloseConnection( |
QUIC_INTERNAL_ERROR, |
@@ -308,7 +308,7 @@ QuicConsumedData QuicSession::WritevData( |
// up write blocked until OnCanWrite is next called. |
return QuicConsumedData(0, false); |
} |
- QuicConsumedData data = connection_->SendStreamData(id, iov, offset, fin, |
+ QuicConsumedData data = connection_->SendStreamData(id, iov, offset, state, |
std::move(ack_listener)); |
write_blocked_streams_.UpdateBytesForStream(id, data.bytes_consumed); |
return data; |
@@ -425,28 +425,25 @@ void QuicSession::UpdateFlowControlOnFinalReceivedByteOffset( |
} |
} |
-bool QuicSession::IsEncryptionEstablished() { |
+bool QuicSession::IsEncryptionEstablished() const { |
return GetCryptoStream()->encryption_established(); |
} |
-bool QuicSession::IsCryptoHandshakeConfirmed() { |
+bool QuicSession::IsCryptoHandshakeConfirmed() const { |
return GetCryptoStream()->handshake_confirmed(); |
} |
void QuicSession::OnConfigNegotiated() { |
connection_->SetFromConfig(config_); |
- const QuicVersion version = connection()->version(); |
uint32_t max_streams = 0; |
- if (version > QUIC_VERSION_34 && |
- config_.HasReceivedMaxIncomingDynamicStreams()) { |
+ if (config_.HasReceivedMaxIncomingDynamicStreams()) { |
max_streams = config_.ReceivedMaxIncomingDynamicStreams(); |
} else { |
max_streams = config_.MaxStreamsPerConnection(); |
} |
set_max_open_outgoing_streams(max_streams); |
- if (FLAGS_quic_reloadable_flag_quic_large_ifw_options && |
- perspective() == Perspective::IS_SERVER) { |
+ if (perspective() == Perspective::IS_SERVER) { |
if (config_.HasReceivedConnectionOptions()) { |
// The following variations change the initial receive flow control |
// window sizes. |
@@ -468,25 +465,18 @@ void QuicSession::OnConfigNegotiated() { |
} |
} |
- if (version <= QUIC_VERSION_34) { |
- // A small number of additional incoming streams beyond the limit should be |
- // allowed. This helps avoid early connection termination when FIN/RSTs for |
- // old streams are lost or arrive out of order. |
- // Use a minimum number of additional streams, or a percentage increase, |
- // whichever is larger. |
- uint32_t max_incoming_streams = |
- std::max(max_streams + kMaxStreamsMinimumIncrement, |
- static_cast<uint32_t>(max_streams * kMaxStreamsMultiplier)); |
- set_max_open_incoming_streams(max_incoming_streams); |
- } else { |
- uint32_t max_incoming_streams_to_send = |
- config_.GetMaxIncomingDynamicStreamsToSend(); |
- uint32_t max_incoming_streams = |
- std::max(max_incoming_streams_to_send + kMaxStreamsMinimumIncrement, |
- static_cast<uint32_t>(max_incoming_streams_to_send * |
- kMaxStreamsMultiplier)); |
- set_max_open_incoming_streams(max_incoming_streams); |
- } |
+ // A small number of additional incoming streams beyond the limit should be |
+ // allowed. This helps avoid early connection termination when FIN/RSTs for |
+ // old streams are lost or arrive out of order. |
+ // Use a minimum number of additional streams, or a percentage increase, |
+ // whichever is larger. |
+ uint32_t max_incoming_streams_to_send = |
+ config_.GetMaxIncomingDynamicStreamsToSend(); |
+ uint32_t max_incoming_streams = |
+ std::max(max_incoming_streams_to_send + kMaxStreamsMinimumIncrement, |
+ static_cast<uint32_t>(max_incoming_streams_to_send * |
+ kMaxStreamsMultiplier)); |
+ set_max_open_incoming_streams(max_incoming_streams); |
if (config_.HasReceivedInitialStreamFlowControlWindowBytes()) { |
// Streams which were created before the SHLO was received (0-RTT |