| Index: webrtc/media/sctp/sctpdataengine.cc
 | 
| diff --git a/webrtc/media/sctp/sctpdataengine.cc b/webrtc/media/sctp/sctpdataengine.cc
 | 
| index c1a90f309eaf34dfd39a84a14eafa0deb8cacbc5..e60a890b2cbe49b1086aabf66382c3d68d2034ba 100644
 | 
| --- a/webrtc/media/sctp/sctpdataengine.cc
 | 
| +++ b/webrtc/media/sctp/sctpdataengine.cc
 | 
| @@ -19,7 +19,7 @@
 | 
|  
 | 
|  #include "usrsctplib/usrsctp.h"
 | 
|  #include "webrtc/base/arraysize.h"
 | 
| -#include "webrtc/base/copyonwritebuffer.h"
 | 
| +#include "webrtc/base/buffer.h"
 | 
|  #include "webrtc/base/helpers.h"
 | 
|  #include "webrtc/base/logging.h"
 | 
|  #include "webrtc/base/numerics/safe_conversions.h"
 | 
| @@ -89,7 +89,7 @@
 | 
|  
 | 
|  namespace cricket {
 | 
|  typedef rtc::ScopedMessageData<SctpInboundPacket> InboundPacketMessage;
 | 
| -typedef rtc::ScopedMessageData<rtc::CopyOnWriteBuffer> OutboundPacketMessage;
 | 
| +typedef rtc::ScopedMessageData<rtc::Buffer> OutboundPacketMessage;
 | 
|  
 | 
|  // The biggest SCTP packet.  Starting from a 'safe' wire MTU value of 1280,
 | 
|  // take off 80 bytes for DTLS/TURN/TCP/IP overhead.
 | 
| @@ -103,7 +103,7 @@
 | 
|  };
 | 
|  
 | 
|  struct SctpInboundPacket {
 | 
| -  rtc::CopyOnWriteBuffer buffer;
 | 
| +  rtc::Buffer buffer;
 | 
|    ReceiveDataParams params;
 | 
|    // The |flags| parameter is used by SCTP to distinguish notification packets
 | 
|    // from other types of packets.
 | 
| @@ -165,7 +165,7 @@
 | 
|  }
 | 
|  
 | 
|  // Log the packet in text2pcap format, if log level is at LS_VERBOSE.
 | 
| -static void VerboseLogPacket(const void *data, size_t length, int direction) {
 | 
| +static void VerboseLogPacket(void *data, size_t length, int direction) {
 | 
|    if (LOG_CHECK_LEVEL(LS_VERBOSE) && length > 0) {
 | 
|      char *dump_buf;
 | 
|      if ((dump_buf = usrsctp_dumppacket(
 | 
| @@ -189,7 +189,7 @@
 | 
|    VerboseLogPacket(addr, length, SCTP_DUMP_OUTBOUND);
 | 
|    // Note: We have to copy the data; the caller will delete it.
 | 
|    auto* msg = new OutboundPacketMessage(
 | 
| -      new rtc::CopyOnWriteBuffer(reinterpret_cast<uint8_t*>(data), length));
 | 
| +      new rtc::Buffer(reinterpret_cast<uint8_t*>(data), length));
 | 
|    channel->worker_thread()->Post(channel, MSG_SCTPOUTBOUNDPACKET, msg);
 | 
|    return 0;
 | 
|  }
 | 
| @@ -581,7 +581,7 @@
 | 
|  
 | 
|  bool SctpDataMediaChannel::SendData(
 | 
|      const SendDataParams& params,
 | 
| -    const rtc::CopyOnWriteBuffer& payload,
 | 
| +    const rtc::Buffer& payload,
 | 
|      SendDataResult* result) {
 | 
|    if (result) {
 | 
|      // Preset |result| to assume an error.  If SendData succeeds, we'll
 | 
| @@ -651,7 +651,7 @@
 | 
|  
 | 
|  // Called by network interface when a packet has been received.
 | 
|  void SctpDataMediaChannel::OnPacketReceived(
 | 
| -    rtc::CopyOnWriteBuffer* packet, const rtc::PacketTime& packet_time) {
 | 
| +    rtc::Buffer* packet, const rtc::PacketTime& packet_time) {
 | 
|    RTC_DCHECK(rtc::Thread::Current() == worker_thread_);
 | 
|    LOG(LS_VERBOSE) << debug_name_ << "->OnPacketReceived(...): "
 | 
|                    << " length=" << packet->size() << ", sending: " << sending_;
 | 
| @@ -663,8 +663,8 @@
 | 
|      // Pass received packet to SCTP stack. Once processed by usrsctp, the data
 | 
|      // will be will be given to the global OnSctpInboundData, and then,
 | 
|      // marshalled by a Post and handled with OnMessage.
 | 
| -    VerboseLogPacket(packet->cdata(), packet->size(), SCTP_DUMP_INBOUND);
 | 
| -    usrsctp_conninput(this, packet->cdata(), packet->size(), 0);
 | 
| +    VerboseLogPacket(packet->data(), packet->size(), SCTP_DUMP_INBOUND);
 | 
| +    usrsctp_conninput(this, packet->data(), packet->size(), 0);
 | 
|    } else {
 | 
|      // TODO(ldixon): Consider caching the packet for very slightly better
 | 
|      // reliability.
 | 
| @@ -686,25 +686,25 @@
 | 
|      return;
 | 
|    }
 | 
|    if (packet->flags & MSG_NOTIFICATION) {
 | 
| -    OnNotificationFromSctp(packet->buffer);
 | 
| +    OnNotificationFromSctp(&packet->buffer);
 | 
|    } else {
 | 
| -    OnDataFromSctpToChannel(packet->params, packet->buffer);
 | 
| +    OnDataFromSctpToChannel(packet->params, &packet->buffer);
 | 
|    }
 | 
|  }
 | 
|  
 | 
|  void SctpDataMediaChannel::OnDataFromSctpToChannel(
 | 
| -    const ReceiveDataParams& params, const rtc::CopyOnWriteBuffer& buffer) {
 | 
| +    const ReceiveDataParams& params, rtc::Buffer* buffer) {
 | 
|    if (receiving_) {
 | 
|      LOG(LS_VERBOSE) << debug_name_ << "->OnDataFromSctpToChannel(...): "
 | 
| -                    << "Posting with length: " << buffer.size()
 | 
| +                    << "Posting with length: " << buffer->size()
 | 
|                      << " on stream " << params.ssrc;
 | 
|      // Reports all received messages to upper layers, no matter whether the sid
 | 
|      // is known.
 | 
| -    SignalDataReceived(params, buffer.data<char>(), buffer.size());
 | 
| +    SignalDataReceived(params, buffer->data<char>(), buffer->size());
 | 
|    } else {
 | 
|      LOG(LS_WARNING) << debug_name_ << "->OnDataFromSctpToChannel(...): "
 | 
|                      << "Not receiving packet with sid=" << params.ssrc
 | 
| -                    << " len=" << buffer.size() << " before SetReceive(true).";
 | 
| +                    << " len=" << buffer->size() << " before SetReceive(true).";
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -767,11 +767,10 @@
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| -void SctpDataMediaChannel::OnNotificationFromSctp(
 | 
| -    const rtc::CopyOnWriteBuffer& buffer) {
 | 
| +void SctpDataMediaChannel::OnNotificationFromSctp(rtc::Buffer* buffer) {
 | 
|    const sctp_notification& notification =
 | 
| -      reinterpret_cast<const sctp_notification&>(*buffer.data());
 | 
| -  ASSERT(notification.sn_header.sn_length == buffer.size());
 | 
| +      reinterpret_cast<const sctp_notification&>(*buffer->data());
 | 
| +  ASSERT(notification.sn_header.sn_length == buffer->size());
 | 
|  
 | 
|    // TODO(ldixon): handle notifications appropriately.
 | 
|    switch (notification.sn_header.sn_type) {
 | 
| @@ -964,7 +963,7 @@
 | 
|  }
 | 
|  
 | 
|  void SctpDataMediaChannel::OnPacketFromSctpToNetwork(
 | 
| -    rtc::CopyOnWriteBuffer* buffer) {
 | 
| +    rtc::Buffer* buffer) {
 | 
|    // usrsctp seems to interpret the MTU we give it strangely -- it seems to
 | 
|    // give us back packets bigger than that MTU, if only by a fixed amount.
 | 
|    // This is that amount that we've observed.
 | 
| 
 |