Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(365)

Side by Side Diff: webrtc/p2p/base/p2ptransportchannel_unittest.cc

Issue 1803063004: Reset the BWE when the network changes (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Removed changes in call dir and leave that in a separate CL. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/p2p/base/p2ptransportchannel.cc ('k') | webrtc/p2p/base/port.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « webrtc/p2p/base/p2ptransportchannel.cc ('k') | webrtc/p2p/base/port.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698