Index: net/quic/quic_network_transaction_unittest.cc |
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc |
index 14037efc236b88c5dc2fef4f420cd19ee1ff5295..af6fb7b2f9e27697eb107f425bbc345f580ac8c8 100644 |
--- a/net/quic/quic_network_transaction_unittest.cc |
+++ b/net/quic/quic_network_transaction_unittest.cc |
@@ -860,6 +860,34 @@ TEST_P(QuicNetworkTransactionTest, FailedZeroRttBrokenAlternateProtocol) { |
EXPECT_TRUE(quic_data.at_write_eof()); |
} |
+TEST_P(QuicNetworkTransactionTest, HangingZeroRttFallback) { |
+ // Alternate-protocol job |
+ MockRead quic_reads[] = { |
+ MockRead(ASYNC, ERR_IO_PENDING), |
+ }; |
+ StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), |
+ NULL, 0); |
+ socket_factory_.AddSocketDataProvider(&quic_data); |
+ |
+ // Main job that will proceed when the QUIC job fails. |
+ MockRead http_reads[] = { |
+ MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
+ MockRead("hello from http"), |
+ MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
+ MockRead(ASYNC, OK) |
+ }; |
+ |
+ StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
+ NULL, 0); |
+ socket_factory_.AddSocketDataProvider(&http_data); |
+ |
+ CreateSessionWithNextProtos(); |
+ |
+ AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); |
+ |
+ SendRequestAndExpectHttpResponse("hello from http"); |
+} |
+ |
TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocolOnConnectFailure) { |
// Alternate-protocol job will fail before creating a QUIC session. |
StaticSocketDataProvider quic_data(NULL, 0, NULL, 0); |