| Index: remoting/protocol/channel_multiplexer.cc | 
| diff --git a/remoting/protocol/channel_multiplexer.cc b/remoting/protocol/channel_multiplexer.cc | 
| index 65d29c029f35f58c626eb4c4a515c2b9b013ec40..1ac07ffdf83537de5b99fa52ce24eab41541f840 100644 | 
| --- a/remoting/protocol/channel_multiplexer.cc | 
| +++ b/remoting/protocol/channel_multiplexer.cc | 
| @@ -305,11 +305,7 @@ ChannelMultiplexer::ChannelMultiplexer(StreamChannelFactory* factory, | 
| : base_channel_factory_(factory), | 
| base_channel_name_(base_channel_name), | 
| next_channel_id_(0), | 
| -      parser_(base::Bind(&ChannelMultiplexer::OnIncomingPacket, | 
| -                         base::Unretained(this)), | 
| -              &reader_), | 
| -      weak_factory_(this) { | 
| -} | 
| +      weak_factory_(this) {} | 
|  | 
| ChannelMultiplexer::~ChannelMultiplexer() { | 
| DCHECK(pending_channels_.empty()); | 
| @@ -361,6 +357,8 @@ void ChannelMultiplexer::OnBaseChannelReady( | 
| if (base_channel_.get()) { | 
| // Initialize reader and writer. | 
| reader_.StartReading(base_channel_.get(), | 
| +                         base::Bind(&ChannelMultiplexer::OnIncomingPacket, | 
| +                                    base::Unretained(this)), | 
| base::Bind(&ChannelMultiplexer::OnBaseChannelError, | 
| base::Unretained(this))); | 
| writer_.Start(base::Bind(&P2PStreamSocket::Write, | 
| @@ -424,7 +422,12 @@ void ChannelMultiplexer::NotifyBaseChannelError(const std::string& name, | 
| it->second->OnBaseChannelError(error); | 
| } | 
|  | 
| -void ChannelMultiplexer::OnIncomingPacket(scoped_ptr<MultiplexPacket> packet) { | 
| +void ChannelMultiplexer::OnIncomingPacket(scoped_ptr<CompoundBuffer> buffer) { | 
| +  scoped_ptr<MultiplexPacket> packet = | 
| +      ParseMessage<MultiplexPacket>(buffer.get()); | 
| +  if (!packet) | 
| +    return; | 
| + | 
| DCHECK(packet->has_channel_id()); | 
| if (!packet->has_channel_id()) { | 
| LOG(ERROR) << "Received packet without channel_id."; | 
|  |