Index: mojo/public/cpp/bindings/lib/multiplex_router.cc |
diff --git a/mojo/public/cpp/bindings/lib/multiplex_router.cc b/mojo/public/cpp/bindings/lib/multiplex_router.cc |
index cc11f17a1f27c0f117e91c04cdcab915b4aafbb0..4e888afba42873e211b7d22e9b74d0434194bbaa 100644 |
--- a/mojo/public/cpp/bindings/lib/multiplex_router.cc |
+++ b/mojo/public/cpp/bindings/lib/multiplex_router.cc |
@@ -286,7 +286,8 @@ MultiplexRouter::MultiplexRouter( |
scoped_refptr<base::SingleThreadTaskRunner> runner) |
: set_interface_id_namespace_bit_(set_interface_id_namesapce_bit), |
task_runner_(runner), |
- header_validator_(this), |
+ header_validator_(nullptr), |
+ filters_(this), |
connector_(std::move(message_pipe), |
Connector::MULTI_THREADED_SEND, |
std::move(runner)), |
@@ -302,10 +303,15 @@ MultiplexRouter::MultiplexRouter( |
// expect sync requests during sync handle watching, it may still need to |
// dispatch messages to associated endpoints on a different thread. |
connector_.AllowWokenUpBySyncWatchOnSameThread(); |
- connector_.set_incoming_receiver(&header_validator_); |
+ connector_.set_incoming_receiver(&filters_); |
connector_.set_connection_error_handler( |
base::Bind(&MultiplexRouter::OnPipeConnectionError, |
base::Unretained(this))); |
+ |
+ std::unique_ptr<MessageHeaderValidator> header_validator = |
+ base::MakeUnique<MessageHeaderValidator>(); |
+ header_validator_ = header_validator.get(); |
+ filters_.Append(std::move(header_validator)); |
} |
MultiplexRouter::~MultiplexRouter() { |
@@ -329,7 +335,7 @@ MultiplexRouter::~MultiplexRouter() { |
void MultiplexRouter::SetMasterInterfaceName(const std::string& name) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- header_validator_.SetDescription(name + " [master] MessageHeaderValidator"); |
+ header_validator_->SetDescription(name + " [master] MessageHeaderValidator"); |
control_message_handler_.SetDescription( |
name + " [master] PipeControlMessageHandler"); |
} |