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

Unified Diff: webrtc/p2p/base/turnport.cc

Issue 2083803002: Fix IPv6 support issue. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: . Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/p2p/base/turnport.cc
diff --git a/webrtc/p2p/base/turnport.cc b/webrtc/p2p/base/turnport.cc
index ff0c2922de28334f285e4592aefb9dc78d6db4ad..d6707a5b700231319ee8bed62eb5d4ace6feb242 100644
--- a/webrtc/p2p/base/turnport.cc
+++ b/webrtc/p2p/base/turnport.cc
@@ -291,7 +291,7 @@ void TurnPort::PrepareAddress() {
if (!IsCompatibleAddress(server_address_.address)) {
LOG(LS_ERROR) << "IP address family does not match: "
<< "server: " << server_address_.address.family()
- << "local: " << ip().family();
+ << " local: " << ip().family();
OnAllocateError();
return;
}
@@ -438,14 +438,10 @@ void TurnPort::OnAllocateMismatch() {
++allocate_mismatch_retries_;
}
-Connection* TurnPort::CreateConnection(const Candidate& address,
+Connection* TurnPort::CreateConnection(const Candidate& remote_candidate,
CandidateOrigin origin) {
// TURN-UDP can only connect to UDP candidates.
- if (!SupportsProtocol(address.protocol())) {
- return NULL;
- }
-
- if (!IsCompatibleAddress(address.address())) {
+ if (!SupportsProtocol(remote_candidate.protocol())) {
return NULL;
}
@@ -454,14 +450,17 @@ Connection* TurnPort::CreateConnection(const Candidate& address,
}
// Create an entry, if needed, so we can get our permissions set up correctly.
- CreateOrRefreshEntry(address.address());
+ CreateOrRefreshEntry(remote_candidate.address());
// A TURN port will have two candiates, STUN and TURN. STUN may not
// present in all cases. If present stun candidate will be added first
// and TURN candidate later.
for (size_t index = 0; index < Candidates().size(); ++index) {
- if (Candidates()[index].type() == RELAY_PORT_TYPE) {
- ProxyConnection* conn = new ProxyConnection(this, index, address);
+ const Candidate& local_candidate = Candidates()[index];
+ if (local_candidate.type() == RELAY_PORT_TYPE &&
+ AddressFamilyMatch(local_candidate, remote_candidate)) {
+ ProxyConnection* conn =
+ new ProxyConnection(this, index, remote_candidate);
AddOrReplaceConnection(conn);
return conn;
}
@@ -478,6 +477,12 @@ bool TurnPort::DestroyConnection(const rtc::SocketAddress& address) {
return false;
}
+bool TurnPort::AddressFamilyMatch(const Candidate& local_candidate,
+ const Candidate& remote_candidate) const {
pthatcher1 2016/06/21 05:26:54 This can just be a static function. It doesn't ne
honghaiz3 2016/06/21 18:36:06 Just inlined it.
+ return local_candidate.address().family() ==
+ remote_candidate.address().family();
+}
+
int TurnPort::SetOption(rtc::Socket::Option opt, int value) {
if (!socket_) {
// If socket is not created yet, these options will be applied during socket

Powered by Google App Engine
This is Rietveld 408576698