OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 cricket::P2PTransportChannel* channel = new cricket::P2PTransportChannel( | 310 cricket::P2PTransportChannel* channel = new cricket::P2PTransportChannel( |
311 "test content name", component, GetAllocator(endpoint)); | 311 "test content name", component, GetAllocator(endpoint)); |
312 channel->SignalCandidateGathered.connect( | 312 channel->SignalCandidateGathered.connect( |
313 this, &P2PTransportChannelTestBase::OnCandidateGathered); | 313 this, &P2PTransportChannelTestBase::OnCandidateGathered); |
314 channel->SignalCandidatesRemoved.connect( | 314 channel->SignalCandidatesRemoved.connect( |
315 this, &P2PTransportChannelTestBase::OnCandidatesRemoved); | 315 this, &P2PTransportChannelTestBase::OnCandidatesRemoved); |
316 channel->SignalReadPacket.connect( | 316 channel->SignalReadPacket.connect( |
317 this, &P2PTransportChannelTestBase::OnReadPacket); | 317 this, &P2PTransportChannelTestBase::OnReadPacket); |
318 channel->SignalRoleConflict.connect( | 318 channel->SignalRoleConflict.connect( |
319 this, &P2PTransportChannelTestBase::OnRoleConflict); | 319 this, &P2PTransportChannelTestBase::OnRoleConflict); |
| 320 channel->SignalSelectedCandidatePairChanged.connect( |
| 321 this, &P2PTransportChannelTestBase::OnSelectedCandidatePairChanged); |
320 channel->SetIceCredentials(local_ice_ufrag, local_ice_pwd); | 322 channel->SetIceCredentials(local_ice_ufrag, local_ice_pwd); |
321 if (clear_remote_candidates_ufrag_pwd_) { | 323 if (clear_remote_candidates_ufrag_pwd_) { |
322 // This only needs to be set if we're clearing them from the | 324 // This only needs to be set if we're clearing them from the |
323 // candidates. Some unit tests rely on this not being set. | 325 // candidates. Some unit tests rely on this not being set. |
324 channel->SetRemoteIceCredentials(remote_ice_ufrag, remote_ice_pwd); | 326 channel->SetRemoteIceCredentials(remote_ice_ufrag, remote_ice_pwd); |
325 } | 327 } |
326 channel->SetIceRole(GetEndpoint(endpoint)->ice_role()); | 328 channel->SetIceRole(GetEndpoint(endpoint)->ice_role()); |
327 channel->SetIceTiebreaker(GetEndpoint(endpoint)->GetIceTiebreaker()); | 329 channel->SetIceTiebreaker(GetEndpoint(endpoint)->GetIceTiebreaker()); |
328 channel->Connect(); | 330 channel->Connect(); |
329 channel->MaybeStartGathering(); | 331 channel->MaybeStartGathering(); |
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
734 std::list<std::string>& packets = GetPacketList(channel); | 736 std::list<std::string>& packets = GetPacketList(channel); |
735 packets.push_front(std::string(data, len)); | 737 packets.push_front(std::string(data, len)); |
736 } | 738 } |
737 void OnRoleConflict(cricket::TransportChannelImpl* channel) { | 739 void OnRoleConflict(cricket::TransportChannelImpl* channel) { |
738 GetEndpoint(channel)->OnRoleConflict(true); | 740 GetEndpoint(channel)->OnRoleConflict(true); |
739 cricket::IceRole new_role = | 741 cricket::IceRole new_role = |
740 GetEndpoint(channel)->ice_role() == cricket::ICEROLE_CONTROLLING ? | 742 GetEndpoint(channel)->ice_role() == cricket::ICEROLE_CONTROLLING ? |
741 cricket::ICEROLE_CONTROLLED : cricket::ICEROLE_CONTROLLING; | 743 cricket::ICEROLE_CONTROLLED : cricket::ICEROLE_CONTROLLING; |
742 channel->SetIceRole(new_role); | 744 channel->SetIceRole(new_role); |
743 } | 745 } |
| 746 |
| 747 void OnSelectedCandidatePairChanged( |
| 748 cricket::TransportChannel* channel, |
| 749 cricket::CandidatePairInterface* candidate_pair) { |
| 750 ++num_selected_candidate_pair_changes_; |
| 751 } |
| 752 |
744 int SendData(cricket::TransportChannel* channel, | 753 int SendData(cricket::TransportChannel* channel, |
745 const char* data, size_t len) { | 754 const char* data, size_t len) { |
746 rtc::PacketOptions options; | 755 rtc::PacketOptions options; |
747 return channel->SendPacket(data, len, options, 0); | 756 return channel->SendPacket(data, len, options, 0); |
748 } | 757 } |
749 bool CheckDataOnChannel(cricket::TransportChannel* channel, | 758 bool CheckDataOnChannel(cricket::TransportChannel* channel, |
750 const char* data, int len) { | 759 const char* data, int len) { |
751 return GetChannelData(channel)->CheckData(data, len); | 760 return GetChannelData(channel)->CheckData(data, len); |
752 } | 761 } |
753 static const cricket::Candidate* LocalCandidate( | 762 static const cricket::Candidate* LocalCandidate( |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 } | 796 } |
788 | 797 |
789 void set_clear_remote_candidates_ufrag_pwd(bool clear) { | 798 void set_clear_remote_candidates_ufrag_pwd(bool clear) { |
790 clear_remote_candidates_ufrag_pwd_ = clear; | 799 clear_remote_candidates_ufrag_pwd_ = clear; |
791 } | 800 } |
792 | 801 |
793 void set_force_relay(bool relay) { | 802 void set_force_relay(bool relay) { |
794 force_relay_ = relay; | 803 force_relay_ = relay; |
795 } | 804 } |
796 | 805 |
| 806 int num_selected_candidate_pair_changes() { |
| 807 return num_selected_candidate_pair_changes_; |
| 808 } |
| 809 void set_num_selected_candidate_pair_changes(int num) { |
| 810 num_selected_candidate_pair_changes_ = num; |
| 811 } |
| 812 |
797 private: | 813 private: |
798 rtc::Thread* main_; | 814 rtc::Thread* main_; |
799 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; | 815 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; |
800 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; | 816 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; |
801 rtc::scoped_ptr<rtc::NATSocketServer> nss_; | 817 rtc::scoped_ptr<rtc::NATSocketServer> nss_; |
802 rtc::scoped_ptr<rtc::FirewallSocketServer> ss_; | 818 rtc::scoped_ptr<rtc::FirewallSocketServer> ss_; |
803 rtc::SocketServerScope ss_scope_; | 819 rtc::SocketServerScope ss_scope_; |
804 rtc::scoped_ptr<cricket::TestStunServer> stun_server_; | 820 rtc::scoped_ptr<cricket::TestStunServer> stun_server_; |
805 cricket::TestTurnServer turn_server_; | 821 cricket::TestTurnServer turn_server_; |
806 cricket::TestRelayServer relay_server_; | 822 cricket::TestRelayServer relay_server_; |
807 rtc::SocksProxyServer socks_server1_; | 823 rtc::SocksProxyServer socks_server1_; |
808 rtc::SocksProxyServer socks_server2_; | 824 rtc::SocksProxyServer socks_server2_; |
809 Endpoint ep1_; | 825 Endpoint ep1_; |
810 Endpoint ep2_; | 826 Endpoint ep2_; |
| 827 int num_selected_candidate_pair_changes_ = 0; |
811 bool clear_remote_candidates_ufrag_pwd_; | 828 bool clear_remote_candidates_ufrag_pwd_; |
812 bool force_relay_; | 829 bool force_relay_; |
813 }; | 830 }; |
814 | 831 |
815 // The tests have only a few outcomes, which we predefine. | 832 // The tests have only a few outcomes, which we predefine. |
816 const P2PTransportChannelTestBase::Result P2PTransportChannelTestBase:: | 833 const P2PTransportChannelTestBase::Result P2PTransportChannelTestBase:: |
817 kLocalUdpToLocalUdp("local", "udp", "local", "udp", | 834 kLocalUdpToLocalUdp("local", "udp", "local", "udp", |
818 "local", "udp", "local", "udp", 1000); | 835 "local", "udp", "local", "udp", 1000); |
819 const P2PTransportChannelTestBase::Result P2PTransportChannelTestBase:: | 836 const P2PTransportChannelTestBase::Result P2PTransportChannelTestBase:: |
820 kLocalUdpToStunUdp("local", "udp", "stun", "udp", | 837 kLocalUdpToStunUdp("local", "udp", "stun", "udp", |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1571 | 1588 |
1572 // Test that we can establish connectivity when both peers are multihomed. | 1589 // Test that we can establish connectivity when both peers are multihomed. |
1573 TEST_F(P2PTransportChannelMultihomedTest, DISABLED_TestBasic) { | 1590 TEST_F(P2PTransportChannelMultihomedTest, DISABLED_TestBasic) { |
1574 AddAddress(0, kPublicAddrs[0]); | 1591 AddAddress(0, kPublicAddrs[0]); |
1575 AddAddress(0, kAlternateAddrs[0]); | 1592 AddAddress(0, kAlternateAddrs[0]); |
1576 AddAddress(1, kPublicAddrs[1]); | 1593 AddAddress(1, kPublicAddrs[1]); |
1577 AddAddress(1, kAlternateAddrs[1]); | 1594 AddAddress(1, kAlternateAddrs[1]); |
1578 Test(kLocalUdpToLocalUdp); | 1595 Test(kLocalUdpToLocalUdp); |
1579 } | 1596 } |
1580 | 1597 |
1581 // Test that we can quickly switch links if an interface goes down. | 1598 // Test that we can quickly switch links if an interface goes down. This also |
1582 // The controlled side has two interfaces and one will die. | 1599 // tests that when the link switches, |SignalSelectedCandidatePairChanged| will |
| 1600 // be fired. The controlled side has two interfaces and one will die. |
1583 TEST_F(P2PTransportChannelMultihomedTest, TestFailoverControlledSide) { | 1601 TEST_F(P2PTransportChannelMultihomedTest, TestFailoverControlledSide) { |
1584 AddAddress(0, kPublicAddrs[0]); | 1602 AddAddress(0, kPublicAddrs[0]); |
1585 // Adding alternate address will make sure |kPublicAddrs| has the higher | 1603 // Adding alternate address will make sure |kPublicAddrs| has the higher |
1586 // priority than others. This is due to FakeNetwork::AddInterface method. | 1604 // priority than others. This is due to FakeNetwork::AddInterface method. |
1587 AddAddress(1, kAlternateAddrs[1]); | 1605 AddAddress(1, kAlternateAddrs[1]); |
1588 AddAddress(1, kPublicAddrs[1]); | 1606 AddAddress(1, kPublicAddrs[1]); |
1589 | 1607 |
1590 // Use only local ports for simplicity. | 1608 // Use only local ports for simplicity. |
1591 SetAllocatorFlags(0, kOnlyLocalPorts); | 1609 SetAllocatorFlags(0, kOnlyLocalPorts); |
1592 SetAllocatorFlags(1, kOnlyLocalPorts); | 1610 SetAllocatorFlags(1, kOnlyLocalPorts); |
1593 | 1611 |
1594 // Create channels and let them go writable, as usual. | 1612 // Create channels and let them go writable, as usual. |
1595 CreateChannels(1); | 1613 CreateChannels(1); |
1596 | 1614 |
1597 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() && | 1615 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() && |
1598 ep2_ch1()->receiving() && ep2_ch1()->writable(), | 1616 ep2_ch1()->receiving() && ep2_ch1()->writable(), |
1599 1000, 1000); | 1617 1000, 1000); |
1600 EXPECT_TRUE( | 1618 EXPECT_TRUE( |
1601 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && | 1619 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && |
1602 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && | 1620 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && |
1603 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); | 1621 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); |
1604 | 1622 |
1605 // Make the receiving timeout shorter for testing. | 1623 // Make the receiving timeout shorter for testing. |
1606 cricket::IceConfig config = CreateIceConfig(1000, false); | 1624 cricket::IceConfig config = CreateIceConfig(1000, false); |
1607 ep1_ch1()->SetIceConfig(config); | 1625 ep1_ch1()->SetIceConfig(config); |
1608 ep2_ch1()->SetIceConfig(config); | 1626 ep2_ch1()->SetIceConfig(config); |
1609 | 1627 |
| 1628 set_num_selected_candidate_pair_changes(0); |
1610 // Blackhole any traffic to or from the public addrs. | 1629 // Blackhole any traffic to or from the public addrs. |
1611 LOG(LS_INFO) << "Failing over..."; | 1630 LOG(LS_INFO) << "Failing over..."; |
1612 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[1]); | 1631 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[1]); |
1613 // The best connections will switch, so keep references to them. | 1632 // The best connections will switch, so keep references to them. |
1614 const cricket::Connection* best_connection1 = ep1_ch1()->best_connection(); | 1633 const cricket::Connection* best_connection1 = ep1_ch1()->best_connection(); |
1615 const cricket::Connection* best_connection2 = ep2_ch1()->best_connection(); | 1634 const cricket::Connection* best_connection2 = ep2_ch1()->best_connection(); |
1616 // We should detect loss of receiving within 1 second or so. | 1635 // We should detect loss of receiving within 1 second or so. |
1617 EXPECT_TRUE_WAIT( | 1636 EXPECT_TRUE_WAIT( |
1618 !best_connection1->receiving() && !best_connection2->receiving(), 3000); | 1637 !best_connection1->receiving() && !best_connection2->receiving(), 3000); |
1619 | 1638 |
1620 // We should switch over to use the alternate addr immediately on both sides | 1639 // We should switch over to use the alternate addr immediately on both sides |
1621 // when we are not receiving. | 1640 // when we are not receiving. |
1622 EXPECT_TRUE_WAIT( | 1641 EXPECT_TRUE_WAIT( |
1623 ep1_ch1()->best_connection()->receiving() && | 1642 ep1_ch1()->best_connection()->receiving() && |
1624 ep2_ch1()->best_connection()->receiving(), 1000); | 1643 ep2_ch1()->best_connection()->receiving(), 1000); |
1625 EXPECT_TRUE(LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0])); | 1644 EXPECT_TRUE(LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0])); |
1626 EXPECT_TRUE( | 1645 EXPECT_TRUE( |
1627 RemoteCandidate(ep1_ch1())->address().EqualIPs(kAlternateAddrs[1])); | 1646 RemoteCandidate(ep1_ch1())->address().EqualIPs(kAlternateAddrs[1])); |
1628 EXPECT_TRUE( | 1647 EXPECT_TRUE( |
1629 LocalCandidate(ep2_ch1())->address().EqualIPs(kAlternateAddrs[1])); | 1648 LocalCandidate(ep2_ch1())->address().EqualIPs(kAlternateAddrs[1])); |
| 1649 // It should have changed twice, one on each side. |
| 1650 EXPECT_EQ(2, num_selected_candidate_pair_changes()); |
1630 | 1651 |
1631 DestroyChannels(); | 1652 DestroyChannels(); |
1632 } | 1653 } |
1633 | 1654 |
1634 // Test that we can quickly switch links if an interface goes down. | 1655 // Test that we can quickly switch links if an interface goes down. This also |
1635 // The controlling side has two interfaces and one will die. | 1656 // tests that when the link switches, |SignalSelectedCandidatePairChanged| will |
| 1657 // be fired. The controlling side has two interfaces and one will die. |
1636 TEST_F(P2PTransportChannelMultihomedTest, TestFailoverControllingSide) { | 1658 TEST_F(P2PTransportChannelMultihomedTest, TestFailoverControllingSide) { |
1637 // Adding alternate address will make sure |kPublicAddrs| has the higher | 1659 // Adding alternate address will make sure |kPublicAddrs| has the higher |
1638 // priority than others. This is due to FakeNetwork::AddInterface method. | 1660 // priority than others. This is due to FakeNetwork::AddInterface method. |
1639 AddAddress(0, kAlternateAddrs[0]); | 1661 AddAddress(0, kAlternateAddrs[0]); |
1640 AddAddress(0, kPublicAddrs[0]); | 1662 AddAddress(0, kPublicAddrs[0]); |
1641 AddAddress(1, kPublicAddrs[1]); | 1663 AddAddress(1, kPublicAddrs[1]); |
1642 | 1664 |
1643 // Use only local ports for simplicity. | 1665 // Use only local ports for simplicity. |
1644 SetAllocatorFlags(0, kOnlyLocalPorts); | 1666 SetAllocatorFlags(0, kOnlyLocalPorts); |
1645 SetAllocatorFlags(1, kOnlyLocalPorts); | 1667 SetAllocatorFlags(1, kOnlyLocalPorts); |
1646 | 1668 |
1647 // Create channels and let them go writable, as usual. | 1669 // Create channels and let them go writable, as usual. |
1648 CreateChannels(1); | 1670 CreateChannels(1); |
1649 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() && | 1671 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() && |
1650 ep2_ch1()->receiving() && ep2_ch1()->writable(), | 1672 ep2_ch1()->receiving() && ep2_ch1()->writable(), |
1651 1000, 1000); | 1673 1000, 1000); |
1652 EXPECT_TRUE( | 1674 EXPECT_TRUE( |
1653 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && | 1675 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && |
1654 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && | 1676 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && |
1655 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); | 1677 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); |
1656 | 1678 |
1657 // Make the receiving timeout shorter for testing. | 1679 // Make the receiving timeout shorter for testing. |
1658 cricket::IceConfig config = CreateIceConfig(1000, false); | 1680 cricket::IceConfig config = CreateIceConfig(1000, false); |
1659 ep1_ch1()->SetIceConfig(config); | 1681 ep1_ch1()->SetIceConfig(config); |
1660 ep2_ch1()->SetIceConfig(config); | 1682 ep2_ch1()->SetIceConfig(config); |
| 1683 set_num_selected_candidate_pair_changes(0); |
1661 | 1684 |
1662 // Blackhole any traffic to or from the public addrs. | 1685 // Blackhole any traffic to or from the public addrs. |
1663 LOG(LS_INFO) << "Failing over..."; | 1686 LOG(LS_INFO) << "Failing over..."; |
1664 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[0]); | 1687 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[0]); |
1665 // The best connections will switch, so keep references to them. | 1688 // The best connections will switch, so keep references to them. |
1666 const cricket::Connection* best_connection1 = ep1_ch1()->best_connection(); | 1689 const cricket::Connection* best_connection1 = ep1_ch1()->best_connection(); |
1667 const cricket::Connection* best_connection2 = ep2_ch1()->best_connection(); | 1690 const cricket::Connection* best_connection2 = ep2_ch1()->best_connection(); |
1668 // We should detect loss of receiving within 1 second or so. | 1691 // We should detect loss of receiving within 1 second or so. |
1669 EXPECT_TRUE_WAIT( | 1692 EXPECT_TRUE_WAIT( |
1670 !best_connection1->receiving() && !best_connection2->receiving(), 3000); | 1693 !best_connection1->receiving() && !best_connection2->receiving(), 3000); |
1671 | 1694 |
1672 // We should switch over to use the alternate addr immediately on both sides | 1695 // We should switch over to use the alternate addr immediately on both sides |
1673 // when we are not receiving. | 1696 // when we are not receiving. |
1674 EXPECT_TRUE_WAIT( | 1697 EXPECT_TRUE_WAIT( |
1675 ep1_ch1()->best_connection()->receiving() && | 1698 ep1_ch1()->best_connection()->receiving() && |
1676 ep2_ch1()->best_connection()->receiving(), 1000); | 1699 ep2_ch1()->best_connection()->receiving(), 1000); |
1677 EXPECT_TRUE( | 1700 EXPECT_TRUE( |
1678 LocalCandidate(ep1_ch1())->address().EqualIPs(kAlternateAddrs[0])); | 1701 LocalCandidate(ep1_ch1())->address().EqualIPs(kAlternateAddrs[0])); |
1679 EXPECT_TRUE(RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); | 1702 EXPECT_TRUE(RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); |
1680 EXPECT_TRUE( | 1703 EXPECT_TRUE( |
1681 RemoteCandidate(ep2_ch1())->address().EqualIPs(kAlternateAddrs[0])); | 1704 RemoteCandidate(ep2_ch1())->address().EqualIPs(kAlternateAddrs[0])); |
| 1705 EXPECT_EQ(2, num_selected_candidate_pair_changes()); |
1682 | 1706 |
1683 DestroyChannels(); | 1707 DestroyChannels(); |
1684 } | 1708 } |
1685 | 1709 |
1686 // Tests that a Wifi-Wifi connection has the highest precedence. | 1710 // Tests that a Wifi-Wifi connection has the highest precedence. |
1687 TEST_F(P2PTransportChannelMultihomedTest, TestPreferWifiToWifiConnection) { | 1711 TEST_F(P2PTransportChannelMultihomedTest, TestPreferWifiToWifiConnection) { |
1688 // The interface names are chosen so that |cellular| would have higher | 1712 // The interface names are chosen so that |cellular| would have higher |
1689 // candidate priority if it is not for the network type. | 1713 // candidate priority if it is not for the network type. |
1690 auto& wifi = kAlternateAddrs; | 1714 auto& wifi = kAlternateAddrs; |
1691 auto& cellular = kPublicAddrs; | 1715 auto& cellular = kPublicAddrs; |
(...skipping 1029 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2721 | 2745 |
2722 // TCP Relay/Relay is the next. | 2746 // TCP Relay/Relay is the next. |
2723 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, | 2747 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, |
2724 cricket::RELAY_PORT_TYPE, | 2748 cricket::RELAY_PORT_TYPE, |
2725 cricket::TCP_PROTOCOL_NAME); | 2749 cricket::TCP_PROTOCOL_NAME); |
2726 | 2750 |
2727 // Finally, Local/Relay will be pinged. | 2751 // Finally, Local/Relay will be pinged. |
2728 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, | 2752 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, |
2729 cricket::RELAY_PORT_TYPE); | 2753 cricket::RELAY_PORT_TYPE); |
2730 } | 2754 } |
OLD | NEW |