| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 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 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 if (allocator_->proxy().type != rtc::PROXY_NONE) | 429 if (allocator_->proxy().type != rtc::PROXY_NONE) |
| 430 port->set_proxy(allocator_->user_agent(), allocator_->proxy()); | 430 port->set_proxy(allocator_->user_agent(), allocator_->proxy()); |
| 431 port->set_send_retransmit_count_attribute((allocator_->flags() & | 431 port->set_send_retransmit_count_attribute((allocator_->flags() & |
| 432 PORTALLOCATOR_ENABLE_STUN_RETRANSMIT_ATTRIBUTE) != 0); | 432 PORTALLOCATOR_ENABLE_STUN_RETRANSMIT_ATTRIBUTE) != 0); |
| 433 | 433 |
| 434 // Push down the candidate_filter to individual port. | 434 // Push down the candidate_filter to individual port. |
| 435 uint32_t candidate_filter = allocator_->candidate_filter(); | 435 uint32_t candidate_filter = allocator_->candidate_filter(); |
| 436 | 436 |
| 437 // When adapter enumeration is disabled, disable CF_HOST at port level so | 437 // When adapter enumeration is disabled, disable CF_HOST at port level so |
| 438 // local address is not leaked by stunport in the candidate's related address. | 438 // local address is not leaked by stunport in the candidate's related address. |
| 439 if (flags() & PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION) { | 439 if ((flags() & PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION) && |
| 440 (flags() & PORTALLOCATOR_DISABLE_DEFAULT_LOCAL_CANDIDATE)) { |
| 440 candidate_filter &= ~CF_HOST; | 441 candidate_filter &= ~CF_HOST; |
| 441 } | 442 } |
| 442 port->set_candidate_filter(candidate_filter); | 443 port->set_candidate_filter(candidate_filter); |
| 443 | 444 |
| 444 PortData data(port, seq); | 445 PortData data(port, seq); |
| 445 ports_.push_back(data); | 446 ports_.push_back(data); |
| 446 | 447 |
| 447 port->SignalCandidateReady.connect( | 448 port->SignalCandidateReady.connect( |
| 448 this, &BasicPortAllocatorSession::OnCandidateReady); | 449 this, &BasicPortAllocatorSession::OnCandidateReady); |
| 449 port->SignalPortComplete.connect(this, | 450 port->SignalPortComplete.connect(this, |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 if ((filter & CF_REFLEXIVE) && !c.address().IsPrivateIP()) { | 594 if ((filter & CF_REFLEXIVE) && !c.address().IsPrivateIP()) { |
| 594 // We allow host candidates if the filter allows server-reflexive | 595 // We allow host candidates if the filter allows server-reflexive |
| 595 // candidates and the candidate is a public IP. Because we don't generate | 596 // candidates and the candidate is a public IP. Because we don't generate |
| 596 // server-reflexive candidates if they have the same IP as the host | 597 // server-reflexive candidates if they have the same IP as the host |
| 597 // candidate (i.e. when the host candidate is a public IP), filtering to | 598 // candidate (i.e. when the host candidate is a public IP), filtering to |
| 598 // only server-reflexive candidates won't work right when the host | 599 // only server-reflexive candidates won't work right when the host |
| 599 // candidates have public IPs. | 600 // candidates have public IPs. |
| 600 return true; | 601 return true; |
| 601 } | 602 } |
| 602 | 603 |
| 603 // If PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE is specified and it's | |
| 604 // loopback address, we should allow it as it's for demo page connectivity | |
| 605 // when no TURN/STUN specified. | |
| 606 if (c.address().IsLoopbackIP() && | |
| 607 (flags() & PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE) != 0) { | |
| 608 return true; | |
| 609 } | |
| 610 | |
| 611 // This is just to prevent the case when binding to any address (all 0s), if | |
| 612 // somehow the host candidate address is not all 0s. Either because local | |
| 613 // installed proxy changes the address or a packet has been sent for any | |
| 614 // reason before getsockname is called. | |
| 615 if (flags() & PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION) { | |
| 616 LOG(LS_WARNING) << "Received non-0 host address: " | |
| 617 << c.address().ToString() | |
| 618 << " when adapter enumeration is disabled"; | |
| 619 return false; | |
| 620 } | |
| 621 | |
| 622 return ((filter & CF_HOST) != 0); | 604 return ((filter & CF_HOST) != 0); |
| 623 } | 605 } |
| 624 return false; | 606 return false; |
| 625 } | 607 } |
| 626 | 608 |
| 627 void BasicPortAllocatorSession::OnPortAllocationComplete( | 609 void BasicPortAllocatorSession::OnPortAllocationComplete( |
| 628 AllocationSequence* seq) { | 610 AllocationSequence* seq) { |
| 629 // Send candidate allocation complete signal if all ports are done. | 611 // Send candidate allocation complete signal if all ports are done. |
| 630 MaybeSignalCandidatesAllocationDone(); | 612 MaybeSignalCandidatesAllocationDone(); |
| 631 } | 613 } |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 875 | 857 |
| 876 void AllocationSequence::CreateUDPPorts() { | 858 void AllocationSequence::CreateUDPPorts() { |
| 877 if (IsFlagSet(PORTALLOCATOR_DISABLE_UDP)) { | 859 if (IsFlagSet(PORTALLOCATOR_DISABLE_UDP)) { |
| 878 LOG(LS_VERBOSE) << "AllocationSequence: UDP ports disabled, skipping."; | 860 LOG(LS_VERBOSE) << "AllocationSequence: UDP ports disabled, skipping."; |
| 879 return; | 861 return; |
| 880 } | 862 } |
| 881 | 863 |
| 882 // TODO(mallinath) - Remove UDPPort creating socket after shared socket | 864 // TODO(mallinath) - Remove UDPPort creating socket after shared socket |
| 883 // is enabled completely. | 865 // is enabled completely. |
| 884 UDPPort* port = NULL; | 866 UDPPort* port = NULL; |
| 885 bool emit_localhost_for_anyaddress = | 867 bool emit_local_candidate_for_anyaddress = |
| 886 IsFlagSet(PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE); | 868 !IsFlagSet(PORTALLOCATOR_DISABLE_DEFAULT_LOCAL_CANDIDATE); |
| 887 if (IsFlagSet(PORTALLOCATOR_ENABLE_SHARED_SOCKET) && udp_socket_) { | 869 if (IsFlagSet(PORTALLOCATOR_ENABLE_SHARED_SOCKET) && udp_socket_) { |
| 888 port = UDPPort::Create( | 870 port = UDPPort::Create( |
| 889 session_->network_thread(), session_->socket_factory(), network_, | 871 session_->network_thread(), session_->socket_factory(), network_, |
| 890 udp_socket_.get(), session_->username(), session_->password(), | 872 udp_socket_.get(), session_->username(), session_->password(), |
| 891 session_->allocator()->origin(), emit_localhost_for_anyaddress); | 873 session_->allocator()->origin(), emit_local_candidate_for_anyaddress); |
| 892 } else { | 874 } else { |
| 893 port = UDPPort::Create( | 875 port = UDPPort::Create( |
| 894 session_->network_thread(), session_->socket_factory(), network_, ip_, | 876 session_->network_thread(), session_->socket_factory(), network_, ip_, |
| 895 session_->allocator()->min_port(), session_->allocator()->max_port(), | 877 session_->allocator()->min_port(), session_->allocator()->max_port(), |
| 896 session_->username(), session_->password(), | 878 session_->username(), session_->password(), |
| 897 session_->allocator()->origin(), emit_localhost_for_anyaddress); | 879 session_->allocator()->origin(), emit_local_candidate_for_anyaddress); |
| 898 } | 880 } |
| 899 | 881 |
| 900 if (port) { | 882 if (port) { |
| 901 // If shared socket is enabled, STUN candidate will be allocated by the | 883 // If shared socket is enabled, STUN candidate will be allocated by the |
| 902 // UDPPort. | 884 // UDPPort. |
| 903 if (IsFlagSet(PORTALLOCATOR_ENABLE_SHARED_SOCKET)) { | 885 if (IsFlagSet(PORTALLOCATOR_ENABLE_SHARED_SOCKET)) { |
| 904 udp_port_ = port; | 886 udp_port_ = port; |
| 905 port->SignalDestroyed.connect(this, &AllocationSequence::OnPortDestroyed); | 887 port->SignalDestroyed.connect(this, &AllocationSequence::OnPortDestroyed); |
| 906 | 888 |
| 907 // If STUN is not disabled, setting stun server address to port. | 889 // If STUN is not disabled, setting stun server address to port. |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1190 ServerAddresses servers; | 1172 ServerAddresses servers; |
| 1191 for (size_t i = 0; i < relays.size(); ++i) { | 1173 for (size_t i = 0; i < relays.size(); ++i) { |
| 1192 if (relays[i].type == turn_type && SupportsProtocol(relays[i], type)) { | 1174 if (relays[i].type == turn_type && SupportsProtocol(relays[i], type)) { |
| 1193 servers.insert(relays[i].ports.front().address); | 1175 servers.insert(relays[i].ports.front().address); |
| 1194 } | 1176 } |
| 1195 } | 1177 } |
| 1196 return servers; | 1178 return servers; |
| 1197 } | 1179 } |
| 1198 | 1180 |
| 1199 } // namespace cricket | 1181 } // namespace cricket |
| OLD | NEW |