| Index: remoting/protocol/rtp_reader.cc
|
| diff --git a/remoting/protocol/rtp_reader.cc b/remoting/protocol/rtp_reader.cc
|
| index b989c4481db2424e3d4d9835fdd63cf7fafd7bec..7e2125052ca480f0d7d631a5767c79f1e7ba4b10 100644
|
| --- a/remoting/protocol/rtp_reader.cc
|
| +++ b/remoting/protocol/rtp_reader.cc
|
| @@ -24,15 +24,25 @@ void RtpReader::Init(net::Socket* socket,
|
| }
|
|
|
| void RtpReader::OnDataReceived(net::IOBuffer* buffer, int data_size) {
|
| - RtpPacket packet;
|
| + RtpPacket* packet = new RtpPacket();
|
| int header_size = UnpackRtpHeader(reinterpret_cast<uint8*>(buffer->data()),
|
| - data_size, packet.mutable_header());
|
| + data_size, packet->mutable_header());
|
| if (header_size < 0) {
|
| LOG(WARNING) << "Received invalid RTP packet.";
|
| return;
|
| }
|
| - packet.mutable_payload()->Append(buffer, buffer->data() + header_size,
|
| - data_size - header_size);
|
| +
|
| + int descriptor_size = UnpackVp8Descriptor(
|
| + reinterpret_cast<uint8*>(buffer->data()) + header_size,
|
| + data_size - header_size, packet->mutable_vp8_descriptor());
|
| + if (descriptor_size < 0) {
|
| + LOG(WARNING) << "Received RTP packet with an invalid VP8 descriptor.";
|
| + return;
|
| + }
|
| +
|
| + packet->mutable_payload()->Append(
|
| + buffer, buffer->data() + header_size + descriptor_size,
|
| + data_size - header_size - descriptor_size);
|
|
|
| on_message_callback_->Run(packet);
|
| }
|
|
|