diff --git a/talk/app/webrtc/peerconnection.cc b/talk/app/webrtc/peerconnection.cc index 369838174..d1338897d 100644 --- a/talk/app/webrtc/peerconnection.cc +++ b/talk/app/webrtc/peerconnection.cc @@ -39,6 +39,9 @@ #include "talk/session/media/channelmanager.h" #include "webrtc/base/logging.h" #include "webrtc/base/stringencode.h" +#ifdef WEBRTC_CHROMIUM_BUILD +#include "webrtc/system_wrappers/interface/field_trial.h" +#endif namespace { @@ -353,12 +356,19 @@ bool PeerConnection::DoInitialize( cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET; bool value; + // If IPv6 flag was specified, we'll not override it by experiment. if (FindConstraint( - constraints, - MediaConstraintsInterface::kEnableIPv6, - &value, NULL) && value) { + constraints, MediaConstraintsInterface::kEnableIPv6, &value, NULL)) { + if (value) { + portallocator_flags |= cricket::PORTALLOCATOR_ENABLE_IPV6; + } + } +#ifdef WEBRTC_CHROMIUM_BUILD + else if (webrtc::field_trial::FindFullName("WebRTC-IPv6Default") == + "Enabled") { portallocator_flags |= cricket::PORTALLOCATOR_ENABLE_IPV6; } +#endif // WEBRTC_CHROMIUM_BUILD port_allocator_->set_flags(portallocator_flags); // No step delay is used while allocating ports.