Add missing connected checks in QuicConnection.
PiperOrigin-RevId: 328972073
Change-Id: I792f20fcadc6cc60c380bca4656a1500d28a42cb
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 84396a0..2aab71f 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -318,6 +318,9 @@
&arena_,
alarm_factory_),
support_handshake_done_(version().HasHandshakeDone()) {
+ if (fix_missing_connected_checks_) {
+ QUIC_RELOADABLE_FLAG_COUNT(quic_add_missing_connected_checks);
+ }
QUIC_DLOG(INFO) << ENDPOINT << "Created connection with server connection ID "
<< server_connection_id
<< " and version: " << ParsedQuicVersionToString(version());
@@ -3175,6 +3178,9 @@
DCHECK(!IsHandshakeComplete());
}
#endif
+ if (fix_missing_connected_checks_ && !connected_) {
+ return;
+ }
QuicPacketNumber previous_created_packet_number =
packet_creator_.packet_number();
@@ -3687,6 +3693,13 @@
}
void QuicConnection::SetRetransmissionAlarm() {
+ if (fix_missing_connected_checks_ && !connected_) {
+ if (retransmission_alarm_->IsSet()) {
+ QUIC_BUG << ENDPOINT << "Retransmission alarm is set while disconnected";
+ retransmission_alarm_->Cancel();
+ }
+ return;
+ }
if (packet_creator_.PacketFlusherAttached()) {
pending_retransmission_alarm_ = true;
return;
@@ -4125,7 +4138,8 @@
}
void QuicConnection::CheckIfApplicationLimited() {
- if (probing_retransmission_pending_) {
+ if ((fix_missing_connected_checks_ && !connected_) ||
+ probing_retransmission_pending_) {
return;
}
@@ -4505,6 +4519,9 @@
bool QuicConnection::FlushCoalescedPacket() {
ScopedCoalescedPacketClearer clearer(&coalesced_packet_);
+ if (fix_missing_connected_checks_ && !connected_) {
+ return false;
+ }
if (!version().CanSendCoalescedPackets()) {
QUIC_BUG_IF(coalesced_packet_.length() > 0);
return true;
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index f6584ff..4d9be1a 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -1730,6 +1730,9 @@
bool start_peer_migration_earlier_ =
GetQuicReloadableFlag(quic_start_peer_migration_earlier);
+
+ bool fix_missing_connected_checks_ =
+ GetQuicReloadableFlag(quic_add_missing_connected_checks);
};
} // namespace quic