Revert 7093: "Implementing ICE Transports type handling in libjingle transport."

TBR=mallinath@webrtc.org
BUG=N/A

Review URL: https://webrtc-codereview.appspot.com/28419004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7112 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/app/webrtc/peerconnection.cc b/talk/app/webrtc/peerconnection.cc
index 3fba862..201269a 100644
--- a/talk/app/webrtc/peerconnection.cc
+++ b/talk/app/webrtc/peerconnection.cc
@@ -672,7 +672,7 @@
       }
     }
   }
-  return session_->SetIceTransports(config.type);
+  return session_->UpdateIce(config.type);
 }
 
 bool PeerConnection::AddIceCandidate(
diff --git a/talk/app/webrtc/webrtcsession.cc b/talk/app/webrtc/webrtcsession.cc
index 13e2128..ae81f24 100644
--- a/talk/app/webrtc/webrtcsession.cc
+++ b/talk/app/webrtc/webrtcsession.cc
@@ -387,22 +387,6 @@
   }
 }
 
-uint32 ConvertIceTransportTypeToCandidateFilter(
-    PeerConnectionInterface::IceTransportsType type) {
-  switch (type) {
-    case PeerConnectionInterface::kNone:
-        return cricket::CF_NONE;
-    case PeerConnectionInterface::kRelay:
-        return cricket::CF_RELAY;
-    case PeerConnectionInterface::kNoHost:
-        return (cricket::CF_ALL & ~cricket::CF_HOST);
-    case PeerConnectionInterface::kAll:
-        return cricket::CF_ALL;
-    default: ASSERT(false);
-  }
-  return cricket::CF_NONE;
-}
-
 // Help class used to remember if a a remote peer has requested ice restart by
 // by sending a description with new ice ufrag and password.
 class IceRestartAnswerLatch {
@@ -656,8 +640,7 @@
   if (options.disable_encryption) {
     webrtc_session_desc_factory_->SetSdesPolicy(cricket::SEC_DISABLED);
   }
-  port_allocator()->set_candidate_filter(
-      ConvertIceTransportTypeToCandidateFilter(ice_transport));
+
   return true;
 }
 
@@ -763,7 +746,6 @@
   if (!UpdateSessionState(action, cricket::CS_LOCAL, err_desc)) {
     return false;
   }
-
   // Kick starting the ice candidates allocation.
   StartCandidatesAllocation();
 
@@ -925,10 +907,8 @@
   return UseCandidate(candidate);
 }
 
-bool WebRtcSession::SetIceTransports(
-    PeerConnectionInterface::IceTransportsType type) {
-  return port_allocator()->set_candidate_filter(
-        ConvertIceTransportTypeToCandidateFilter(type));
+bool WebRtcSession::UpdateIce(PeerConnectionInterface::IceTransportsType type) {
+  return false;
 }
 
 bool WebRtcSession::GetLocalTrackIdBySsrc(uint32 ssrc, std::string* track_id) {
diff --git a/talk/app/webrtc/webrtcsession.h b/talk/app/webrtc/webrtcsession.h
index 86ae435..d1e5645 100644
--- a/talk/app/webrtc/webrtcsession.h
+++ b/talk/app/webrtc/webrtcsession.h
@@ -160,7 +160,7 @@
                             std::string* err_desc);
   bool ProcessIceMessage(const IceCandidateInterface* ice_candidate);
 
-  bool SetIceTransports(PeerConnectionInterface::IceTransportsType type);
+  bool UpdateIce(PeerConnectionInterface::IceTransportsType type);
 
   const SessionDescriptionInterface* local_description() const {
     return local_desc_.get();
diff --git a/talk/app/webrtc/webrtcsession_unittest.cc b/talk/app/webrtc/webrtcsession_unittest.cc
index 2cf422b..2f731a9 100644
--- a/talk/app/webrtc/webrtcsession_unittest.cc
+++ b/talk/app/webrtc/webrtcsession_unittest.cc
@@ -108,8 +108,6 @@
 static const char kStunAddrHost[] = "99.99.99.1";
 static const SocketAddress kTurnUdpIntAddr("99.99.99.4", 3478);
 static const SocketAddress kTurnUdpExtAddr("99.99.99.6", 0);
-static const char kTurnUsername[] = "test";
-static const char kTurnPassword[] = "test";
 
 static const char kSessionVersion[] = "1";
 
@@ -1085,18 +1083,6 @@
     }
   }
 
-  void ConfigureAllocatorWithTurn() {
-    cricket::RelayServerConfig relay_server(cricket::RELAY_TURN);
-    cricket::RelayCredentials credentials(kTurnUsername, kTurnPassword);
-    relay_server.credentials = credentials;
-    relay_server.ports.push_back(cricket::ProtocolAddress(
-        kTurnUdpIntAddr, cricket::PROTO_UDP, false));
-    allocator_->AddRelay(relay_server);
-    allocator_->set_step_delay(cricket::kMinimumStepDelay);
-    allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP |
-                          cricket::PORTALLOCATOR_ENABLE_BUNDLE);
-  }
-
   cricket::FakeMediaEngine* media_engine_;
   cricket::FakeDataEngine* data_engine_;
   cricket::FakeDeviceManager* device_manager_;
@@ -1176,53 +1162,6 @@
   EXPECT_EQ(6u, observer_.mline_1_candidates_.size());
 }
 
-// Test session delivers no candidates gathered when constraint set to "none".
-TEST_F(WebRtcSessionTest, TestIceTransportsNone) {
-  AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort));
-  SetIceTransportType(PeerConnectionInterface::kNone);
-  Init(NULL);
-  mediastream_signaling_.SendAudioVideoStream1();
-  InitiateCall();
-  EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout);
-  EXPECT_EQ(0u, observer_.mline_0_candidates_.size());
-  EXPECT_EQ(0u, observer_.mline_1_candidates_.size());
-}
-
-// Test session delivers only relay candidates gathered when constaint set to
-// "relay".
-TEST_F(WebRtcSessionTest, TestIceTransportsRelay) {
-  AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort));
-  ConfigureAllocatorWithTurn();
-  SetIceTransportType(PeerConnectionInterface::kRelay);
-  Init(NULL);
-  mediastream_signaling_.SendAudioVideoStream1();
-  InitiateCall();
-  EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout);
-  EXPECT_EQ(2u, observer_.mline_0_candidates_.size());
-  EXPECT_EQ(2u, observer_.mline_1_candidates_.size());
-  for (size_t i = 0; i < observer_.mline_0_candidates_.size(); ++i) {
-    EXPECT_EQ(cricket::RELAY_PORT_TYPE,
-              observer_.mline_0_candidates_[i].type());
-  }
-  for (size_t i = 0; i < observer_.mline_1_candidates_.size(); ++i) {
-    EXPECT_EQ(cricket::RELAY_PORT_TYPE,
-              observer_.mline_1_candidates_[i].type());
-  }
-}
-
-// Test session delivers all candidates gathered when constaint set to "all".
-TEST_F(WebRtcSessionTest, TestIceTransportsAll) {
-  AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort));
-  SetIceTransportType(PeerConnectionInterface::kAll);
-  Init(NULL);
-  mediastream_signaling_.SendAudioVideoStream1();
-  InitiateCall();
-  EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout);
-  // Host + STUN. By default allocator is disabled to gather relay candidates.
-  EXPECT_EQ(4u, observer_.mline_0_candidates_.size());
-  EXPECT_EQ(4u, observer_.mline_1_candidates_.size());
-}
-
 TEST_F(WebRtcSessionTest, SetSdpFailedOnInvalidSdp) {
   Init(NULL);
   SessionDescriptionInterface* offer = NULL;
diff --git a/talk/p2p/base/portallocator.h b/talk/p2p/base/portallocator.h
index a3ff031..84e5fea 100644
--- a/talk/p2p/base/portallocator.h
+++ b/talk/p2p/base/portallocator.h
@@ -44,19 +44,17 @@
 // Clients can override this class to control port allocation, including
 // what kinds of ports are allocated.
 
-enum {
-  PORTALLOCATOR_DISABLE_UDP = 0x01,
-  PORTALLOCATOR_DISABLE_STUN = 0x02,
-  PORTALLOCATOR_DISABLE_RELAY = 0x04,
-  PORTALLOCATOR_DISABLE_TCP = 0x08,
-  PORTALLOCATOR_ENABLE_SHAKER = 0x10,
-  PORTALLOCATOR_ENABLE_BUNDLE = 0x20,
-  PORTALLOCATOR_ENABLE_IPV6 = 0x40,
-  PORTALLOCATOR_ENABLE_SHARED_UFRAG = 0x80,
-  PORTALLOCATOR_ENABLE_SHARED_SOCKET = 0x100,
-  PORTALLOCATOR_ENABLE_STUN_RETRANSMIT_ATTRIBUTE = 0x200,
-  PORTALLOCATOR_ENABLE_TURN_SHARED_SOCKET = 0x400,
-};
+const uint32 PORTALLOCATOR_DISABLE_UDP = 0x01;
+const uint32 PORTALLOCATOR_DISABLE_STUN = 0x02;
+const uint32 PORTALLOCATOR_DISABLE_RELAY = 0x04;
+const uint32 PORTALLOCATOR_DISABLE_TCP = 0x08;
+const uint32 PORTALLOCATOR_ENABLE_SHAKER = 0x10;
+const uint32 PORTALLOCATOR_ENABLE_BUNDLE = 0x20;
+const uint32 PORTALLOCATOR_ENABLE_IPV6 = 0x40;
+const uint32 PORTALLOCATOR_ENABLE_SHARED_UFRAG = 0x80;
+const uint32 PORTALLOCATOR_ENABLE_SHARED_SOCKET = 0x100;
+const uint32 PORTALLOCATOR_ENABLE_STUN_RETRANSMIT_ATTRIBUTE = 0x200;
+const uint32 PORTALLOCATOR_ENABLE_TURN_SHARED_SOCKET = 0x400;
 
 const uint32 kDefaultPortAllocatorFlags = 0;
 
@@ -65,15 +63,6 @@
 // internal. Less than 20ms is not acceptable. We choose 50ms as our default.
 const uint32 kMinimumStepDelay = 50;
 
-// CF = CANDIDATE FILTER
-enum {
-  CF_NONE = 0x0,
-  CF_HOST = 0x1,
-  CF_REFLEXIVE = 0x2,
-  CF_RELAY = 0x4,
-  CF_ALL = 0x7,
-};
-
 class PortAllocatorSessionMuxer;
 
 class PortAllocatorSession : public sigslot::has_slots<> {
@@ -129,8 +118,7 @@
       min_port_(0),
       max_port_(0),
       step_delay_(kDefaultStepDelay),
-      allow_tcp_listen_(true),
-      candidate_filter_(CF_ALL) {
+      allow_tcp_listen_(true) {
     // This will allow us to have old behavior on non webrtc clients.
   }
   virtual ~PortAllocator();
@@ -179,13 +167,6 @@
     allow_tcp_listen_ = allow_tcp_listen;
   }
 
-  uint32 candidate_filter() { return candidate_filter_; }
-  bool set_candidate_filter(uint32 filter) {
-    // TODO(mallinath) - Do transition check?
-    candidate_filter_ = filter;
-    return true;
-  }
-
  protected:
   virtual PortAllocatorSession* CreateSessionInternal(
       const std::string& content_name,
@@ -203,7 +184,6 @@
   uint32 step_delay_;
   SessionMuxerMap muxers_;
   bool allow_tcp_listen_;
-  uint32 candidate_filter_;
 };
 
 }  // namespace cricket
diff --git a/talk/p2p/client/basicportallocator.cc b/talk/p2p/client/basicportallocator.cc
index 6c184b4..d39db8f 100644
--- a/talk/p2p/client/basicportallocator.cc
+++ b/talk/p2p/client/basicportallocator.cc
@@ -47,15 +47,13 @@
 
 namespace {
 
-enum {
-  MSG_CONFIG_START,
-  MSG_CONFIG_READY,
-  MSG_ALLOCATE,
-  MSG_ALLOCATION_PHASE,
-  MSG_SHAKE,
-  MSG_SEQUENCEOBJECTS_CREATED,
-  MSG_CONFIG_STOP,
-};
+const uint32 MSG_CONFIG_START = 1;
+const uint32 MSG_CONFIG_READY = 2;
+const uint32 MSG_ALLOCATE = 3;
+const uint32 MSG_ALLOCATION_PHASE = 4;
+const uint32 MSG_SHAKE = 5;
+const uint32 MSG_SEQUENCEOBJECTS_CREATED = 6;
+const uint32 MSG_CONFIG_STOP = 7;
 
 const int PHASE_UDP = 0;
 const int PHASE_RELAY = 1;
@@ -230,11 +228,10 @@
 PortAllocatorSession *BasicPortAllocator::CreateSessionInternal(
     const std::string& content_name, int component,
     const std::string& ice_ufrag, const std::string& ice_pwd) {
-  return new BasicPortAllocatorSession(
-      this, content_name, component, ice_ufrag, ice_pwd);
+  return new BasicPortAllocatorSession(this, content_name, component,
+                                       ice_ufrag, ice_pwd);
 }
 
-
 // BasicPortAllocatorSession
 BasicPortAllocatorSession::BasicPortAllocatorSession(
     BasicPortAllocator *allocator,
@@ -533,10 +530,8 @@
   // Send candidates whose protocol is enabled.
   std::vector<Candidate> candidates;
   ProtocolType pvalue;
-  bool candidate_allowed_to_send = CheckCandidateFilter(c);
   if (StringToProto(c.protocol().c_str(), &pvalue) &&
-      data->sequence()->ProtocolEnabled(pvalue) &&
-      candidate_allowed_to_send) {
+      data->sequence()->ProtocolEnabled(pvalue)) {
     candidates.push_back(c);
   }
 
@@ -547,9 +542,7 @@
   // Moving to READY state as we have atleast one candidate from the port.
   // Since this port has atleast one candidate we should forward this port
   // to listners, to allow connections from this port.
-  // Also we should make sure that candidate gathered from this port is allowed
-  // to send outside.
-  if (!data->ready() && candidate_allowed_to_send) {
+  if (!data->ready()) {
     data->set_ready();
     SignalPortReady(this, port);
   }
@@ -595,8 +588,6 @@
 
     const std::vector<Candidate>& potentials = it->port()->Candidates();
     for (size_t i = 0; i < potentials.size(); ++i) {
-      if (!CheckCandidateFilter(potentials[i]))
-        continue;
       ProtocolType pvalue;
       if (!StringToProto(potentials[i].protocol().c_str(), &pvalue))
         continue;
@@ -611,31 +602,6 @@
   }
 }
 
-bool BasicPortAllocatorSession::CheckCandidateFilter(const Candidate& c) {
-  uint32 filter = allocator_->candidate_filter();
-  bool allowed = false;
-  if (filter & CF_RELAY) {
-    allowed |= (c.type() == RELAY_PORT_TYPE);
-  }
-
-  if (filter & CF_REFLEXIVE) {
-    // We allow host candidates if the filter allows server-reflexive candidates
-    // and the candidate is a public IP. Because we don't generate
-    // server-reflexive candidates if they have the same IP as the host
-    // candidate (i.e. when the host candidate is a public IP), filtering to
-    // only server-reflexive candidates won't work right when the host
-    // candidates have public IPs.
-    allowed |= (c.type() == STUN_PORT_TYPE) ||
-               (c.type() == LOCAL_PORT_TYPE && !c.address().IsPrivateIP());
-  }
-
-  if (filter & CF_HOST) {
-    allowed |= (c.type() == LOCAL_PORT_TYPE);
-  }
-
-  return allowed;
-}
-
 void BasicPortAllocatorSession::OnPortAllocationComplete(
     AllocationSequence* seq) {
   // Send candidate allocation complete signal if all ports are done.
diff --git a/talk/p2p/client/basicportallocator.h b/talk/p2p/client/basicportallocator.h
index d424772..5f43880 100644
--- a/talk/p2p/client/basicportallocator.h
+++ b/talk/p2p/client/basicportallocator.h
@@ -160,6 +160,7 @@
 
     void set_ready() { ASSERT(state_ == STATE_INIT); state_ = STATE_READY; }
     void set_complete() {
+      ASSERT(state_ == STATE_READY);
       state_ = STATE_COMPLETE;
     }
     void set_error() {
@@ -200,8 +201,6 @@
   void OnPortAllocationComplete(AllocationSequence* seq);
   PortData* FindPort(Port* port);
 
-  bool CheckCandidateFilter(const Candidate& c);
-
   BasicPortAllocator* allocator_;
   rtc::Thread* network_thread_;
   rtc::scoped_ptr<rtc::PacketSocketFactory> owned_socket_factory_;
diff --git a/talk/p2p/client/portallocator_unittest.cc b/talk/p2p/client/portallocator_unittest.cc
index 51142d0..57cfbe3 100644
--- a/talk/p2p/client/portallocator_unittest.cc
+++ b/talk/p2p/client/portallocator_unittest.cc
@@ -53,7 +53,6 @@
 using rtc::Thread;
 
 static const SocketAddress kClientAddr("11.11.11.11", 0);
-static const SocketAddress kPrivateAddr("192.168.1.11", 0);
 static const SocketAddress kClientIPv6Addr(
     "2401:fa00:4:1000:be30:5bff:fee5:c3", 0);
 static const SocketAddress kClientAddr2("22.22.22.22", 0);
@@ -539,7 +538,7 @@
 // Test to verify ICE restart process.
 TEST_F(PortAllocatorTest, TestGetAllPortsRestarts) {
   AddInterface(kClientAddr);
-  EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP));
+  EXPECT_TRUE(CreateSession(1));
   session_->StartGettingPorts();
   EXPECT_EQ_WAIT(7U, candidates_.size(), kDefaultAllocationTimeout);
   EXPECT_EQ(4U, ports_.size());
@@ -547,78 +546,6 @@
   // TODO - Extend this to verify ICE restart.
 }
 
-// Test ICE candidate filter mechanism with options Relay/Host/Reflexive.
-TEST_F(PortAllocatorTest, TestCandidateFilterWithRelayOnly) {
-  AddInterface(kClientAddr);
-  allocator().set_candidate_filter(cricket::CF_RELAY);
-  EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP));
-  session_->StartGettingPorts();
-  EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout);
-  // Using GTURN, we will have 4 candidates.
-  EXPECT_EQ(4U, candidates_.size());
-  EXPECT_EQ(1U, ports_.size());  // Only Relay port will be in ready state.
-  for (size_t i = 0; i < candidates_.size(); ++i) {
-    EXPECT_EQ(cricket::RELAY_PORT_TYPE, candidates_[i].type());
-  }
-}
-
-TEST_F(PortAllocatorTest, TestCandidateFilterWithHostOnly) {
-  AddInterface(kClientAddr);
-  allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG |
-                        cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET);
-  allocator().set_candidate_filter(cricket::CF_HOST);
-  EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP));
-  session_->StartGettingPorts();
-  EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout);
-  EXPECT_EQ(2U, candidates_.size()); // Host UDP/TCP candidates only.
-  EXPECT_EQ(2U, ports_.size()); // UDP/TCP ports only.
-  for (size_t i = 0; i < candidates_.size(); ++i) {
-    EXPECT_EQ(cricket::LOCAL_PORT_TYPE, candidates_[i].type());
-  }
-}
-
-// Host is behind the NAT.
-TEST_F(PortAllocatorTest, TestCandidateFilterWithReflexiveOnly) {
-  AddInterface(kPrivateAddr);
-  rtc::scoped_ptr<rtc::NATServer> nat_server(
-      CreateNatServer(kNatAddr, rtc::NAT_OPEN_CONE));
-  ServerAddresses stun_servers;
-  stun_servers.insert(kStunAddr);
-  allocator_.reset(new cricket::BasicPortAllocator(
-      &network_manager_, &nat_socket_factory_, stun_servers));
-  allocator().set_step_delay(cricket::kMinimumStepDelay);
-  allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG |
-                        cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET);
-  allocator().set_candidate_filter(cricket::CF_REFLEXIVE);
-  EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP));
-  session_->StartGettingPorts();
-  EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout);
-  // Host is behind NAT, no private address will be exposed. Hence only UDP
-  // port with STUN candidate will be sent outside.
-  EXPECT_EQ(1U, candidates_.size()); // Only STUN candidate.
-  EXPECT_EQ(1U, ports_.size());  // Only UDP port will be in ready state.
-  for (size_t i = 0; i < candidates_.size(); ++i) {
-    EXPECT_EQ(cricket::STUN_PORT_TYPE, candidates_[i].type());
-  }
-}
-
-// Host is not behind the NAT.
-TEST_F(PortAllocatorTest, TestCandidateFilterWithReflexiveOnlyAndNoNAT) {
-  AddInterface(kClientAddr);
-  allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG |
-                        cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET);
-  allocator().set_candidate_filter(cricket::CF_REFLEXIVE);
-  EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP));
-  session_->StartGettingPorts();
-  EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout);
-  // Host has a public address, both UDP and TCP candidates will be exposed.
-  EXPECT_EQ(2U, candidates_.size()); // Local UDP + TCP candidate.
-  EXPECT_EQ(2U, ports_.size());  //  UDP and TCP ports will be in ready state.
-  for (size_t i = 0; i < candidates_.size(); ++i) {
-    EXPECT_EQ(cricket::LOCAL_PORT_TYPE, candidates_[i].type());
-  }
-}
-
 TEST_F(PortAllocatorTest, TestBasicMuxFeatures) {
   AddInterface(kClientAddr);
   allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_BUNDLE);