Index: webrtc/p2p/base/p2ptransportchannel_unittest.cc |
diff --git a/webrtc/p2p/base/p2ptransportchannel_unittest.cc b/webrtc/p2p/base/p2ptransportchannel_unittest.cc |
index 6c26704388b8a86f50d78c079560bf568e94a83a..ed0260e94388c5e53b8af666723a44d0834d8879 100644 |
--- a/webrtc/p2p/base/p2ptransportchannel_unittest.cc |
+++ b/webrtc/p2p/base/p2ptransportchannel_unittest.cc |
@@ -2262,6 +2262,24 @@ TEST_F(P2PTransportChannelPingTest, TestNoTriggeredChecksWhenWritable) { |
EXPECT_EQ(conn2, FindNextPingableConnectionAndPingIt(&ch)); |
} |
+TEST_F(P2PTransportChannelPingTest, TestFailedConnectionNotPingable) { |
+ cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr); |
+ cricket::P2PTransportChannel ch("Do not ping failed connections", 1, &pa); |
+ PrepareChannel(&ch); |
+ ch.Connect(); |
+ ch.MaybeStartGathering(); |
+ ch.AddRemoteCandidate(CreateHostCandidate("1.1.1.1", 1, 1)); |
+ |
+ cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); |
+ ASSERT_TRUE(conn1 != nullptr); |
+ |
+ EXPECT_EQ(conn1, ch.FindNextPingableConnection()); |
+ conn1->Prune(); // A pruned connection may still be pingable. |
+ EXPECT_EQ(conn1, ch.FindNextPingableConnection()); |
+ conn1->FailAndPrune(); |
+ EXPECT_TRUE(nullptr == ch.FindNextPingableConnection()); |
+} |
+ |
TEST_F(P2PTransportChannelPingTest, TestSignalStateChanged) { |
cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr); |
cricket::P2PTransportChannel ch("state change", 1, &pa); |