pRevert 5371 "Revert 5367 "Update talk to 59410372.""

> Revert 5367 "Update talk to 59410372."
> 
> > Update talk to 59410372.
> > 
> > R=jiayl@webrtc.org, wu@webrtc.org
> > 
> > Review URL: https://webrtc-codereview.appspot.com/6929004
> 
> TBR=mallinath@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/6999004

TBR=henrika@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5381 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/media/sctp/sctpdataengine.cc b/talk/media/sctp/sctpdataengine.cc
index 16ce9de..03bbdca 100644
--- a/talk/media/sctp/sctpdataengine.cc
+++ b/talk/media/sctp/sctpdataengine.cc
@@ -32,14 +32,12 @@
 #include <sstream>
 #include <vector>
 
-#include "talk/app/webrtc/datachannelinterface.h"
 #include "talk/base/buffer.h"
 #include "talk/base/helpers.h"
 #include "talk/base/logging.h"
 #include "talk/media/base/codec.h"
 #include "talk/media/base/constants.h"
 #include "talk/media/base/streamparams.h"
-#include "talk/media/sctp/sctputils.h"
 #include "usrsctplib/usrsctp.h"
 
 namespace {
@@ -497,11 +495,17 @@
 }
 
 bool SctpDataMediaChannel::AddRecvStream(const StreamParams& stream) {
-  return AddStream(stream);
+  // SCTP DataChannels are always bi-directional and calling AddSendStream will
+  // enable both sending and receiving on the stream. So AddRecvStream is a
+  // no-op.
+  return true;
 }
 
 bool SctpDataMediaChannel::RemoveRecvStream(uint32 ssrc) {
-  return ResetStream(ssrc);
+  // SCTP DataChannels are always bi-directional and calling RemoveSendStream
+  // will disable both sending and receiving on the stream. So RemoveRecvStream
+  // is a no-op.
+  return true;
 }
 
 bool SctpDataMediaChannel::SendData(
@@ -619,34 +623,12 @@
 
 void SctpDataMediaChannel::OnDataFromSctpToChannel(
     const ReceiveDataParams& params, talk_base::Buffer* buffer) {
-  if (open_streams_.find(params.ssrc) == open_streams_.end()) {
-    if (params.type == DMT_CONTROL) {
-      std::string label;
-      webrtc::DataChannelInit config;
-      if (ParseDataChannelOpenMessage(*buffer, &label, &config)) {
-        config.id = params.ssrc;
-        // Do not send the OPEN message for this data channel.
-        config.negotiated = true;
-        SignalNewStreamReceived(label, config);
-
-        // Add the stream immediately.
-        StreamParams sparams = StreamParams::CreateLegacy(params.ssrc);
-        AddSendStream(sparams);
-        AddRecvStream(sparams);
-      } else {
-        LOG(LS_ERROR) << debug_name_ << "->OnDataFromSctpToChannel(...): "
-                      << "Received malformed control message";
-      }
-    } else {
-      LOG(LS_WARNING) << debug_name_ << "->OnDataFromSctpToChannel(...): "
-                      << "Received packet for unknown ssrc: " << params.ssrc;
-    }
-    return;
-  }
-
   if (receiving_) {
     LOG(LS_VERBOSE) << debug_name_ << "->OnDataFromSctpToChannel(...): "
-                    << "Posting with length: " << buffer->length();
+                    << "Posting with length: " << buffer->length()
+                    << " on stream " << params.ssrc;
+    // Reports all received messages to upper layers, no matter whether the sid
+    // is known.
     SignalDataReceived(params, buffer->data(), buffer->length());
   } else {
     LOG(LS_WARNING) << debug_name_ << "->OnDataFromSctpToChannel(...): "
@@ -663,9 +645,7 @@
 
   const uint32 ssrc = stream.first_ssrc();
   if (open_streams_.find(ssrc) != open_streams_.end()) {
-    // We usually get an AddSendStream and an AddRecvStream for each stream, so
-    // this is really unlikely to be a useful warning message.
-    LOG(LS_VERBOSE) << debug_name_ << "->Add(Send|Recv)Stream(...): "
+    LOG(LS_WARNING) << debug_name_ << "->Add(Send|Recv)Stream(...): "
                     << "Not adding data stream '" << stream.id
                     << "' with ssrc=" << ssrc
                     << " because stream is already open.";
@@ -976,5 +956,4 @@
     }
   }
 }
-
 }  // namespace cricket