diff --git a/quiche/quic/core/http/end_to_end_test.cc b/quiche/quic/core/http/end_to_end_test.cc
index a2043dd..208fe89 100644
--- a/quiche/quic/core/http/end_to_end_test.cc
+++ b/quiche/quic/core/http/end_to_end_test.cc
@@ -1219,24 +1219,15 @@
   QuicConnection* server_connection = GetServerConnection();
   ASSERT_NE(server_connection, nullptr);
   const QuicConnectionStats& server_stats = server_connection->GetStats();
-
-  if (version_ != ParsedQuicVersion::RFCv2()) {
-    EXPECT_EQ(server_stats.packets_sent_by_dispatcher, 1u);
-  } else {
-    EXPECT_EQ(server_stats.packets_sent_by_dispatcher, 0u);
-  }
+  EXPECT_EQ(server_stats.packets_sent_by_dispatcher, 1u);
 
   const QuicDispatcherStats& dispatcher_stats = GetDispatcherStats();
   // The first CHLO packet is enqueued, the second causes session to be created.
   EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 2u);
   EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 1u);
   EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 0u);
+  EXPECT_EQ(dispatcher_stats.packets_sent, 1u);
 
-  if (version_ != ParsedQuicVersion::RFCv2()) {
-    EXPECT_EQ(dispatcher_stats.packets_sent, 1u);
-  } else {
-    EXPECT_EQ(dispatcher_stats.packets_sent, 0u);
-  }
   server_thread_->Resume();
 }
 
@@ -1270,25 +1261,12 @@
   server_thread_->ScheduleAndWaitForCompletion([&] {
     const QuicDispatcherStats& dispatcher_stats = GetDispatcherStats();
     EXPECT_EQ(dispatcher_stats.sessions_created, 1u);
-
-    if (version_ != ParsedQuicVersion::RFCv2()) {
-      // 2 CHLO packets are enqueued, but only the 1st caused a dispatcher ACK.
-      EXPECT_EQ(dispatcher_stats.packets_sent, 1u);
-      EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 2u);
-      EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 1u);
-      EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 0u);
-      EXPECT_DEBUG_EQ(
-          dispatcher_stats.packets_processed_with_replaced_cid_in_store, 1u);
-    } else {
-      EXPECT_EQ(dispatcher_stats.packets_sent, 0u);
-      // 4 CHLO packets are sent by client, 1 of them is lost in client_writer_.
-      EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 3u);
-      // Packet 1 and its retransmission are enqueued early.
-      EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 2u);
-      EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 0u);
-      EXPECT_DEBUG_EQ(
-          dispatcher_stats.packets_processed_with_replaced_cid_in_store, 0u);
-    }
+    EXPECT_EQ(dispatcher_stats.packets_sent, 1u);
+    EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 2u);
+    EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 1u);
+    EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 0u);
+    EXPECT_DEBUG_EQ(
+        dispatcher_stats.packets_processed_with_replaced_cid_in_store, 1u);
   });
 }
 
@@ -1328,13 +1306,8 @@
     EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 1u);
     EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 1u);
     EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 2u);
-
-    if (version_ != ParsedQuicVersion::RFCv2()) {
-      // 2 CHLO packets are enqueued, but only the 1st caused a dispatcher ACK.
-      EXPECT_EQ(dispatcher_stats.packets_sent, 1u);
-    } else {
-      EXPECT_EQ(dispatcher_stats.packets_sent, 0u);
-    }
+    // 2 CHLO packets are enqueued, but only the 1st caused a dispatcher ACK.
+    EXPECT_EQ(dispatcher_stats.packets_sent, 1u);
     EXPECT_EQ(dispatcher_stats.sessions_created, 0u);
 
     GetDispatcher()->ProcessBufferedChlos(1);
@@ -1366,12 +1339,7 @@
   QuicConnection* server_connection = GetServerConnection();
   ASSERT_NE(server_connection, nullptr);
   const QuicConnectionStats& server_stats = server_connection->GetStats();
-
-  if (version_ != ParsedQuicVersion::RFCv2()) {
-    EXPECT_EQ(server_stats.packets_sent_by_dispatcher, 2u);
-  } else {
-    EXPECT_EQ(server_stats.packets_sent_by_dispatcher, 0u);
-  }
+  EXPECT_EQ(server_stats.packets_sent_by_dispatcher, 2u);
 
   const QuicDispatcherStats& dispatcher_stats = GetDispatcherStats();
   // The first and second CHLO packets are enqueued, the third causes session to
@@ -1379,12 +1347,7 @@
   EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 3u);
   EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 2u);
   EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 0u);
-
-  if (version_ != ParsedQuicVersion::RFCv2()) {
-    EXPECT_EQ(dispatcher_stats.packets_sent, 2u);
-  } else {
-    EXPECT_EQ(dispatcher_stats.packets_sent, 0u);
-  }
+  EXPECT_EQ(dispatcher_stats.packets_sent, 2u);
   server_thread_->Resume();
 }
 
@@ -1413,12 +1376,7 @@
   QuicConnection* server_connection = GetServerConnection();
   ASSERT_NE(server_connection, nullptr);
   const QuicConnectionStats& server_stats = server_connection->GetStats();
-
-  if (version_ != ParsedQuicVersion::RFCv2()) {
-    EXPECT_EQ(server_stats.packets_sent_by_dispatcher, 1u);
-  } else {
-    EXPECT_EQ(server_stats.packets_sent_by_dispatcher, 0u);
-  }
+  EXPECT_EQ(server_stats.packets_sent_by_dispatcher, 1u);
 
   const QuicDispatcherStats& dispatcher_stats = GetDispatcherStats();
   // The first and second CHLO packets are enqueued, the third causes session to
@@ -1426,12 +1384,7 @@
   EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 3u);
   EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 2u);
   EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 0u);
-
-  if (version_ != ParsedQuicVersion::RFCv2()) {
-    EXPECT_EQ(dispatcher_stats.packets_sent, 1u);
-  } else {
-    EXPECT_EQ(dispatcher_stats.packets_sent, 0u);
-  }
+  EXPECT_EQ(dispatcher_stats.packets_sent, 1u);
   server_thread_->Resume();
 }
 
@@ -1466,24 +1419,13 @@
     const QuicDispatcherStats& dispatcher_stats = GetDispatcherStats();
     EXPECT_EQ(dispatcher_stats.sessions_created, 1u);
 
-    if (version_ != ParsedQuicVersion::RFCv2()) {
-      // Packet 1 and Packet 2's retransmission caused dispatcher ACKs.
-      EXPECT_EQ(dispatcher_stats.packets_sent, 2u);
-      EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 3u);
-      EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 2u);
-      EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 0u);
-      EXPECT_DEBUG_EQ(
-          dispatcher_stats.packets_processed_with_replaced_cid_in_store, 2u);
-    } else {
-      EXPECT_EQ(dispatcher_stats.packets_sent, 0u);
-      // 6 CHLO packets are sent by client, 2 of them are lost in client_writer.
-      EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 4u);
-      // Packet 1 and packet 1 & 2's retransmissions are enqueued early.
-      EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 3u);
-      EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 0u);
-      EXPECT_DEBUG_EQ(
-          dispatcher_stats.packets_processed_with_replaced_cid_in_store, 0u);
-    }
+    // Packet 1 and Packet 2's retransmission caused dispatcher ACKs.
+    EXPECT_EQ(dispatcher_stats.packets_sent, 2u);
+    EXPECT_EQ(dispatcher_stats.packets_processed_with_unknown_cid, 3u);
+    EXPECT_EQ(dispatcher_stats.packets_enqueued_early, 2u);
+    EXPECT_EQ(dispatcher_stats.packets_enqueued_chlo, 0u);
+    EXPECT_DEBUG_EQ(
+        dispatcher_stats.packets_processed_with_replaced_cid_in_store, 2u);
   });
 }
 
diff --git a/quiche/quic/core/quic_framer.cc b/quiche/quic/core/quic_framer.cc
index 6418968..32a54dd 100644
--- a/quiche/quic/core/quic_framer.cc
+++ b/quiche/quic/core/quic_framer.cc
@@ -6493,12 +6493,6 @@
   QUICHE_DCHECK(packet_number != nullptr);
   packet_number->reset();
 
-  // TODO(wub): Remove the version check once RFCv2 is supported by
-  // ParsePublicHeaderDispatcherShortHeaderLengthUnknown.
-  if (version != ParsedQuicVersion::RFCv1() &&
-      version != ParsedQuicVersion::Draft29()) {
-    return QUIC_NO_ERROR;
-  }
   if (packet.length() == 0 || format != IETF_QUIC_LONG_HEADER_PACKET ||
       !VersionHasIetfQuicFrames(version.transport_version) ||
       long_packet_type != INITIAL) {
diff --git a/quiche/quic/core/quic_framer_test.cc b/quiche/quic/core/quic_framer_test.cc
index c0d27d9..a11b638 100644
--- a/quiche/quic/core/quic_framer_test.cc
+++ b/quiche/quic/core/quic_framer_test.cc
@@ -13285,6 +13285,9 @@
 }
 
 TEST_P(QuicFramerTest, DispatcherParseClientInitialPacketNumber) {
+  if (!version_.HasIetfQuicFrames()) {
+    return;
+  }
   // clang-format off
   PacketFragments packet = {
       // Type (Long header, INITIAL, 2B packet number)
@@ -13314,6 +13317,7 @@
   };
   // clang-format on
 
+  ReviseFirstByteByVersion(packet);
   SetDecrypterLevel(ENCRYPTION_INITIAL);
   std::unique_ptr<QuicEncryptedPacket> encrypted(
       AssemblePacketFromFragments(packet));
@@ -13336,10 +13340,6 @@
                 &destination_connection_id, &source_connection_id, &retry_token,
                 &detailed_error, generator));
   EXPECT_EQ(parsed_version, version_);
-  if (parsed_version != ParsedQuicVersion::RFCv1() &&
-      parsed_version != ParsedQuicVersion::Draft29()) {
-    return;
-  }
   EXPECT_EQ(format, IETF_QUIC_LONG_HEADER_PACKET);
   EXPECT_EQ(destination_connection_id.length(), 8);
   EXPECT_EQ(long_packet_type, INITIAL);
@@ -13363,7 +13363,7 @@
 
 TEST_P(QuicFramerTest,
        DispatcherParseClientInitialPacketNumberFromCoalescedPacket) {
-  if (!QuicVersionHasLongHeaderLengths(framer_.transport_version())) {
+  if (!version_.HasIetfQuicFrames()) {
     return;
   }
   SetDecrypterLevel(ENCRYPTION_INITIAL);
@@ -13457,10 +13457,6 @@
                 &destination_connection_id, &source_connection_id, &retry_token,
                 &detailed_error, generator));
   EXPECT_EQ(parsed_version, version_);
-  if (parsed_version != ParsedQuicVersion::RFCv1() &&
-      parsed_version != ParsedQuicVersion::Draft29()) {
-    return;
-  }
   EXPECT_EQ(format, IETF_QUIC_LONG_HEADER_PACKET);
   EXPECT_EQ(destination_connection_id.length(), 8);
   EXPECT_EQ(long_packet_type, INITIAL);
