| 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 |
| 11 #include <memory> |
| 12 |
| 11 #include "webrtc/p2p/base/p2ptransportchannel.h" | 13 #include "webrtc/p2p/base/p2ptransportchannel.h" |
| 12 #include "webrtc/p2p/base/testrelayserver.h" | 14 #include "webrtc/p2p/base/testrelayserver.h" |
| 13 #include "webrtc/p2p/base/teststunserver.h" | 15 #include "webrtc/p2p/base/teststunserver.h" |
| 14 #include "webrtc/p2p/base/testturnserver.h" | 16 #include "webrtc/p2p/base/testturnserver.h" |
| 15 #include "webrtc/p2p/client/basicportallocator.h" | 17 #include "webrtc/p2p/client/basicportallocator.h" |
| 16 #include "webrtc/p2p/client/fakeportallocator.h" | 18 #include "webrtc/p2p/client/fakeportallocator.h" |
| 17 #include "webrtc/base/dscp.h" | 19 #include "webrtc/base/dscp.h" |
| 18 #include "webrtc/base/fakenetwork.h" | 20 #include "webrtc/base/fakenetwork.h" |
| 19 #include "webrtc/base/firewallsocketserver.h" | 21 #include "webrtc/base/firewallsocketserver.h" |
| 20 #include "webrtc/base/gunit.h" | 22 #include "webrtc/base/gunit.h" |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 if (!ch_packets_.empty()) { | 206 if (!ch_packets_.empty()) { |
| 205 std::string packet = ch_packets_.front(); | 207 std::string packet = ch_packets_.front(); |
| 206 ret = (packet == std::string(data, len)); | 208 ret = (packet == std::string(data, len)); |
| 207 ch_packets_.pop_front(); | 209 ch_packets_.pop_front(); |
| 208 } | 210 } |
| 209 return ret; | 211 return ret; |
| 210 } | 212 } |
| 211 | 213 |
| 212 std::string name_; // TODO - Currently not used. | 214 std::string name_; // TODO - Currently not used. |
| 213 std::list<std::string> ch_packets_; | 215 std::list<std::string> ch_packets_; |
| 214 rtc::scoped_ptr<cricket::P2PTransportChannel> ch_; | 216 std::unique_ptr<cricket::P2PTransportChannel> ch_; |
| 215 }; | 217 }; |
| 216 | 218 |
| 217 struct CandidatesData : public rtc::MessageData { | 219 struct CandidatesData : public rtc::MessageData { |
| 218 CandidatesData(cricket::TransportChannel* ch, const cricket::Candidate& c) | 220 CandidatesData(cricket::TransportChannel* ch, const cricket::Candidate& c) |
| 219 : channel(ch), candidates(1, c) {} | 221 : channel(ch), candidates(1, c) {} |
| 220 CandidatesData(cricket::TransportChannel* ch, | 222 CandidatesData(cricket::TransportChannel* ch, |
| 221 const std::vector<cricket::Candidate>& cc) | 223 const std::vector<cricket::Candidate>& cc) |
| 222 : channel(ch), candidates(cc) {} | 224 : channel(ch), candidates(cc) {} |
| 223 cricket::TransportChannel* channel; | 225 cricket::TransportChannel* channel; |
| 224 cricket::Candidates candidates; | 226 cricket::Candidates candidates; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 248 void OnRoleConflict(bool role_conflict) { role_conflict_ = role_conflict; } | 250 void OnRoleConflict(bool role_conflict) { role_conflict_ = role_conflict; } |
| 249 bool role_conflict() { return role_conflict_; } | 251 bool role_conflict() { return role_conflict_; } |
| 250 void SetAllocationStepDelay(uint32_t delay) { | 252 void SetAllocationStepDelay(uint32_t delay) { |
| 251 allocator_->set_step_delay(delay); | 253 allocator_->set_step_delay(delay); |
| 252 } | 254 } |
| 253 void SetAllowTcpListen(bool allow_tcp_listen) { | 255 void SetAllowTcpListen(bool allow_tcp_listen) { |
| 254 allocator_->set_allow_tcp_listen(allow_tcp_listen); | 256 allocator_->set_allow_tcp_listen(allow_tcp_listen); |
| 255 } | 257 } |
| 256 | 258 |
| 257 rtc::FakeNetworkManager network_manager_; | 259 rtc::FakeNetworkManager network_manager_; |
| 258 rtc::scoped_ptr<cricket::BasicPortAllocator> allocator_; | 260 std::unique_ptr<cricket::BasicPortAllocator> allocator_; |
| 259 ChannelData cd1_; | 261 ChannelData cd1_; |
| 260 ChannelData cd2_; | 262 ChannelData cd2_; |
| 261 cricket::IceRole role_; | 263 cricket::IceRole role_; |
| 262 uint64_t tiebreaker_; | 264 uint64_t tiebreaker_; |
| 263 bool role_conflict_; | 265 bool role_conflict_; |
| 264 bool save_candidates_; | 266 bool save_candidates_; |
| 265 std::vector<CandidatesData*> saved_candidates_; | 267 std::vector<CandidatesData*> saved_candidates_; |
| 266 }; | 268 }; |
| 267 | 269 |
| 268 ChannelData* GetChannelData(cricket::TransportChannel* channel) { | 270 ChannelData* GetChannelData(cricket::TransportChannel* channel) { |
| (...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 for (; it != ed->saved_candidates_.end(); ++it) { | 697 for (; it != ed->saved_candidates_.end(); ++it) { |
| 696 main_->Post(this, MSG_ADD_CANDIDATES, *it); | 698 main_->Post(this, MSG_ADD_CANDIDATES, *it); |
| 697 } | 699 } |
| 698 ed->saved_candidates_.clear(); | 700 ed->saved_candidates_.clear(); |
| 699 ed->save_candidates_ = false; | 701 ed->save_candidates_ = false; |
| 700 } | 702 } |
| 701 | 703 |
| 702 void OnMessage(rtc::Message* msg) { | 704 void OnMessage(rtc::Message* msg) { |
| 703 switch (msg->message_id) { | 705 switch (msg->message_id) { |
| 704 case MSG_ADD_CANDIDATES: { | 706 case MSG_ADD_CANDIDATES: { |
| 705 rtc::scoped_ptr<CandidatesData> data( | 707 std::unique_ptr<CandidatesData> data( |
| 706 static_cast<CandidatesData*>(msg->pdata)); | 708 static_cast<CandidatesData*>(msg->pdata)); |
| 707 cricket::P2PTransportChannel* rch = GetRemoteChannel(data->channel); | 709 cricket::P2PTransportChannel* rch = GetRemoteChannel(data->channel); |
| 708 for (auto& c : data->candidates) { | 710 for (auto& c : data->candidates) { |
| 709 if (clear_remote_candidates_ufrag_pwd_) { | 711 if (clear_remote_candidates_ufrag_pwd_) { |
| 710 c.set_username(""); | 712 c.set_username(""); |
| 711 c.set_password(""); | 713 c.set_password(""); |
| 712 } | 714 } |
| 713 LOG(LS_INFO) << "Candidate(" << data->channel->component() << "->" | 715 LOG(LS_INFO) << "Candidate(" << data->channel->component() << "->" |
| 714 << rch->component() << "): " << c.ToString(); | 716 << rch->component() << "): " << c.ToString(); |
| 715 rch->AddRemoteCandidate(c); | 717 rch->AddRemoteCandidate(c); |
| 716 } | 718 } |
| 717 break; | 719 break; |
| 718 } | 720 } |
| 719 case MSG_REMOVE_CANDIDATES: { | 721 case MSG_REMOVE_CANDIDATES: { |
| 720 rtc::scoped_ptr<CandidatesData> data( | 722 std::unique_ptr<CandidatesData> data( |
| 721 static_cast<CandidatesData*>(msg->pdata)); | 723 static_cast<CandidatesData*>(msg->pdata)); |
| 722 cricket::P2PTransportChannel* rch = GetRemoteChannel(data->channel); | 724 cricket::P2PTransportChannel* rch = GetRemoteChannel(data->channel); |
| 723 for (cricket::Candidate& c : data->candidates) { | 725 for (cricket::Candidate& c : data->candidates) { |
| 724 LOG(LS_INFO) << "Removed remote candidate " << c.ToString(); | 726 LOG(LS_INFO) << "Removed remote candidate " << c.ToString(); |
| 725 rch->RemoveRemoteCandidate(c); | 727 rch->RemoveRemoteCandidate(c); |
| 726 } | 728 } |
| 727 break; | 729 break; |
| 728 } | 730 } |
| 729 } | 731 } |
| 730 } | 732 } |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 void set_clear_remote_candidates_ufrag_pwd(bool clear) { | 792 void set_clear_remote_candidates_ufrag_pwd(bool clear) { |
| 791 clear_remote_candidates_ufrag_pwd_ = clear; | 793 clear_remote_candidates_ufrag_pwd_ = clear; |
| 792 } | 794 } |
| 793 | 795 |
| 794 void set_force_relay(bool relay) { | 796 void set_force_relay(bool relay) { |
| 795 force_relay_ = relay; | 797 force_relay_ = relay; |
| 796 } | 798 } |
| 797 | 799 |
| 798 private: | 800 private: |
| 799 rtc::Thread* main_; | 801 rtc::Thread* main_; |
| 800 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; | 802 std::unique_ptr<rtc::PhysicalSocketServer> pss_; |
| 801 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; | 803 std::unique_ptr<rtc::VirtualSocketServer> vss_; |
| 802 rtc::scoped_ptr<rtc::NATSocketServer> nss_; | 804 std::unique_ptr<rtc::NATSocketServer> nss_; |
| 803 rtc::scoped_ptr<rtc::FirewallSocketServer> ss_; | 805 std::unique_ptr<rtc::FirewallSocketServer> ss_; |
| 804 rtc::SocketServerScope ss_scope_; | 806 rtc::SocketServerScope ss_scope_; |
| 805 rtc::scoped_ptr<cricket::TestStunServer> stun_server_; | 807 std::unique_ptr<cricket::TestStunServer> stun_server_; |
| 806 cricket::TestTurnServer turn_server_; | 808 cricket::TestTurnServer turn_server_; |
| 807 cricket::TestRelayServer relay_server_; | 809 cricket::TestRelayServer relay_server_; |
| 808 rtc::SocksProxyServer socks_server1_; | 810 rtc::SocksProxyServer socks_server1_; |
| 809 rtc::SocksProxyServer socks_server2_; | 811 rtc::SocksProxyServer socks_server2_; |
| 810 Endpoint ep1_; | 812 Endpoint ep1_; |
| 811 Endpoint ep2_; | 813 Endpoint ep2_; |
| 812 bool clear_remote_candidates_ufrag_pwd_; | 814 bool clear_remote_candidates_ufrag_pwd_; |
| 813 bool force_relay_; | 815 bool force_relay_; |
| 814 }; | 816 }; |
| 815 | 817 |
| (...skipping 1171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1987 } | 1989 } |
| 1988 | 1990 |
| 1989 cricket::CandidatePairInterface* last_selected_candidate_pair() { | 1991 cricket::CandidatePairInterface* last_selected_candidate_pair() { |
| 1990 return last_selected_candidate_pair_; | 1992 return last_selected_candidate_pair_; |
| 1991 } | 1993 } |
| 1992 int last_sent_packet_id() { return last_sent_packet_id_; } | 1994 int last_sent_packet_id() { return last_sent_packet_id_; } |
| 1993 bool channel_ready_to_send() { return channel_ready_to_send_; } | 1995 bool channel_ready_to_send() { return channel_ready_to_send_; } |
| 1994 void reset_channel_ready_to_send() { channel_ready_to_send_ = false; } | 1996 void reset_channel_ready_to_send() { channel_ready_to_send_ = false; } |
| 1995 | 1997 |
| 1996 private: | 1998 private: |
| 1997 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; | 1999 std::unique_ptr<rtc::PhysicalSocketServer> pss_; |
| 1998 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; | 2000 std::unique_ptr<rtc::VirtualSocketServer> vss_; |
| 1999 rtc::SocketServerScope ss_scope_; | 2001 rtc::SocketServerScope ss_scope_; |
| 2000 cricket::CandidatePairInterface* last_selected_candidate_pair_ = nullptr; | 2002 cricket::CandidatePairInterface* last_selected_candidate_pair_ = nullptr; |
| 2001 int last_sent_packet_id_ = -1; | 2003 int last_sent_packet_id_ = -1; |
| 2002 bool channel_ready_to_send_ = false; | 2004 bool channel_ready_to_send_ = false; |
| 2003 }; | 2005 }; |
| 2004 | 2006 |
| 2005 TEST_F(P2PTransportChannelPingTest, TestTriggeredChecks) { | 2007 TEST_F(P2PTransportChannelPingTest, TestTriggeredChecks) { |
| 2006 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr); | 2008 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr); |
| 2007 cricket::P2PTransportChannel ch("trigger checks", 1, &pa); | 2009 cricket::P2PTransportChannel ch("trigger checks", 1, &pa); |
| 2008 PrepareChannel(&ch); | 2010 PrepareChannel(&ch); |
| (...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2633 cricket::Candidate CreateRelayCandidate(const std::string& ip, | 2635 cricket::Candidate CreateRelayCandidate(const std::string& ip, |
| 2634 int port, | 2636 int port, |
| 2635 int priority, | 2637 int priority, |
| 2636 const std::string& ufrag = "") { | 2638 const std::string& ufrag = "") { |
| 2637 cricket::Candidate c = CreateHostCandidate(ip, port, priority, ufrag); | 2639 cricket::Candidate c = CreateHostCandidate(ip, port, priority, ufrag); |
| 2638 c.set_type(cricket::RELAY_PORT_TYPE); | 2640 c.set_type(cricket::RELAY_PORT_TYPE); |
| 2639 return c; | 2641 return c; |
| 2640 } | 2642 } |
| 2641 | 2643 |
| 2642 private: | 2644 private: |
| 2643 rtc::scoped_ptr<cricket::BasicPortAllocator> allocator_; | 2645 std::unique_ptr<cricket::BasicPortAllocator> allocator_; |
| 2644 rtc::FakeNetworkManager network_manager_; | 2646 rtc::FakeNetworkManager network_manager_; |
| 2645 cricket::TestTurnServer turn_server_; | 2647 cricket::TestTurnServer turn_server_; |
| 2646 rtc::scoped_ptr<cricket::P2PTransportChannel> channel_; | 2648 std::unique_ptr<cricket::P2PTransportChannel> channel_; |
| 2647 }; | 2649 }; |
| 2648 | 2650 |
| 2649 // Test that Relay/Relay connections will be pinged first when no other | 2651 // Test that Relay/Relay connections will be pinged first when no other |
| 2650 // connections have been pinged yet, unless we need to ping a trigger check or | 2652 // connections have been pinged yet, unless we need to ping a trigger check or |
| 2651 // we have a best connection. | 2653 // we have a best connection. |
| 2652 TEST_F(P2PTransportChannelMostLikelyToWorkFirstTest, | 2654 TEST_F(P2PTransportChannelMostLikelyToWorkFirstTest, |
| 2653 TestRelayRelayFirstWhenNothingPingedYet) { | 2655 TestRelayRelayFirstWhenNothingPingedYet) { |
| 2654 const int max_strong_interval = 100; | 2656 const int max_strong_interval = 100; |
| 2655 cricket::P2PTransportChannel& ch = | 2657 cricket::P2PTransportChannel& ch = |
| 2656 StartTransportChannel(true, max_strong_interval); | 2658 StartTransportChannel(true, max_strong_interval); |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2795 | 2797 |
| 2796 // TCP Relay/Relay is the next. | 2798 // TCP Relay/Relay is the next. |
| 2797 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, | 2799 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, |
| 2798 cricket::RELAY_PORT_TYPE, | 2800 cricket::RELAY_PORT_TYPE, |
| 2799 cricket::TCP_PROTOCOL_NAME); | 2801 cricket::TCP_PROTOCOL_NAME); |
| 2800 | 2802 |
| 2801 // Finally, Local/Relay will be pinged. | 2803 // Finally, Local/Relay will be pinged. |
| 2802 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, | 2804 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, |
| 2803 cricket::RELAY_PORT_TYPE); | 2805 cricket::RELAY_PORT_TYPE); |
| 2804 } | 2806 } |
| OLD | NEW |