Remove server in connection version negotiation code.
gfe-relnote: Deprecate gfe2_restart_flag_quic_no_server_conn_ver_negotiation2.
PiperOrigin-RevId: 254442620
Change-Id: I490aa71424a9cfb0ee36d1d6a202080f41eeec2f
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 485b4c9..c11d0c0 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -298,7 +298,7 @@
&stats_,
GetQuicReloadableFlag(quic_default_to_bbr) ? kBBR : kCubicBytes,
kNack),
- version_negotiation_state_(START_NEGOTIATION),
+ version_negotiated_(false),
perspective_(perspective),
connected_(true),
can_truncate_connection_ids_(perspective == Perspective::IS_SERVER),
@@ -322,12 +322,7 @@
processing_ack_frame_(false),
supports_release_time_(false),
release_time_into_future_(QuicTime::Delta::Zero()),
- no_version_negotiation_(supported_versions.size() == 1),
retry_has_been_parsed_(false) {
- if (perspective_ == Perspective::IS_SERVER &&
- supported_versions.size() == 1) {
- QUIC_RESTART_FLAG_COUNT(quic_no_server_conn_ver_negotiation2);
- }
QUIC_DLOG(INFO) << ENDPOINT << "Created connection with server connection ID "
<< server_connection_id
<< " and version: " << ParsedQuicVersionToString(version());
@@ -356,8 +351,7 @@
uber_received_packet_manager_.set_max_ack_ranges(255);
MaybeEnableSessionDecidesWhatToWrite();
MaybeEnableMultiplePacketNumberSpacesSupport();
- DCHECK(!GetQuicRestartFlag(quic_no_server_conn_ver_negotiation2) ||
- perspective_ == Perspective::IS_CLIENT ||
+ DCHECK(perspective_ == Perspective::IS_CLIENT ||
supported_versions.size() == 1);
InstallInitialCrypters();
}
@@ -537,8 +531,7 @@
}
bool QuicConnection::OnProtocolVersionMismatch(
- ParsedQuicVersion received_version,
- PacketHeaderFormat form) {
+ ParsedQuicVersion received_version) {
QUIC_DLOG(INFO) << ENDPOINT << "Received packet with mismatched version "
<< ParsedQuicVersionToString(received_version);
if (perspective_ == Perspective::IS_CLIENT) {
@@ -546,64 +539,11 @@
QUIC_BUG << ENDPOINT << error_details;
CloseConnection(QUIC_INTERNAL_ERROR, error_details,
ConnectionCloseBehavior::SILENT_CLOSE);
- return false;
- }
- if (no_version_negotiation_) {
- // Drop old packets that were sent by the client before the version was
- // negotiated.
- return false;
- }
- DCHECK_NE(version(), received_version);
-
- if (debug_visitor_ != nullptr) {
- debug_visitor_->OnProtocolVersionMismatch(received_version);
}
- switch (version_negotiation_state_) {
- case START_NEGOTIATION:
- if (!framer_.IsSupportedVersion(received_version)) {
- SendVersionNegotiationPacket(form != GOOGLE_QUIC_PACKET);
- version_negotiation_state_ = NEGOTIATION_IN_PROGRESS;
- return false;
- }
- break;
-
- case NEGOTIATION_IN_PROGRESS:
- if (!framer_.IsSupportedVersion(received_version)) {
- SendVersionNegotiationPacket(form != GOOGLE_QUIC_PACKET);
- return false;
- }
- break;
-
- case NEGOTIATED_VERSION:
- // Might be old packets that were sent by the client before the version
- // was negotiated. Drop these.
- return false;
-
- default:
- DCHECK(false);
- }
-
- // Store the new version.
- framer_.set_version(received_version);
- framer_.InferPacketHeaderTypeFromVersion();
-
- version_negotiation_state_ = NEGOTIATED_VERSION;
- visitor_->OnSuccessfulVersionNegotiation(received_version);
- if (debug_visitor_ != nullptr) {
- debug_visitor_->OnSuccessfulVersionNegotiation(received_version);
- }
- QUIC_DLOG(INFO) << ENDPOINT << "version negotiated "
- << ParsedQuicVersionToString(received_version);
-
- MaybeEnableSessionDecidesWhatToWrite();
- no_stop_waiting_frames_ =
- VersionHasIetfInvariantHeader(received_version.transport_version);
-
- // TODO(satyamshekhar): Store the packet number of this packet and close the
- // connection if we ever received a packet with incorrect version and whose
- // packet number is greater.
- return true;
+ // Server drops old packets that were sent by the client before the version
+ // was negotiated.
+ return false;
}
// Handles version negotiation for client connection.
@@ -626,7 +566,7 @@
debug_visitor_->OnVersionNegotiationPacket(packet);
}
- if (version_negotiation_state_ != START_NEGOTIATION) {
+ if (version_negotiated_) {
// Possibly a duplicate version negotiation packet.
return;
}
@@ -781,8 +721,7 @@
return false;
}
- if (version_negotiation_state_ != NEGOTIATED_VERSION &&
- perspective_ == Perspective::IS_SERVER) {
+ if (!version_negotiated_ && perspective_ == Perspective::IS_SERVER) {
if (!header.version_flag) {
// Packets should have the version flag till version negotiation is
// done.
@@ -795,14 +734,14 @@
return false;
} else {
DCHECK_EQ(header.version, version());
- version_negotiation_state_ = NEGOTIATED_VERSION;
+ version_negotiated_ = true;
framer_.InferPacketHeaderTypeFromVersion();
visitor_->OnSuccessfulVersionNegotiation(version());
if (debug_visitor_ != nullptr) {
debug_visitor_->OnSuccessfulVersionNegotiation(version());
}
}
- DCHECK_EQ(NEGOTIATED_VERSION, version_negotiation_state_);
+ DCHECK(version_negotiated_);
}
return true;
@@ -1894,7 +1833,7 @@
return false;
}
- if (version_negotiation_state_ != NEGOTIATED_VERSION) {
+ if (!version_negotiated_) {
if (perspective_ == Perspective::IS_CLIENT) {
DCHECK(!header.version_flag || header.form != GOOGLE_QUIC_PACKET);
if (!VersionHasIetfInvariantHeader(framer_.transport_version())) {
@@ -1904,7 +1843,7 @@
// forward secure.
packet_generator_.StopSendingVersion();
}
- version_negotiation_state_ = NEGOTIATED_VERSION;
+ version_negotiated_ = true;
visitor_->OnSuccessfulVersionNegotiation(version());
if (debug_visitor_ != nullptr) {
debug_visitor_->OnSuccessfulVersionNegotiation(version());