| Index: mojo/edk/system/node_controller.cc
|
| diff --git a/mojo/edk/system/node_controller.cc b/mojo/edk/system/node_controller.cc
|
| index e2b1b08f5f307c6846f1e84a8af7c92b6de355b5..337bcac8b132c59a197c6143a9084d21d2e2b57d 100644
|
| --- a/mojo/edk/system/node_controller.cc
|
| +++ b/mojo/edk/system/node_controller.cc
|
| @@ -21,6 +21,7 @@
|
| #include "mojo/edk/system/broker_host.h"
|
| #include "mojo/edk/system/core.h"
|
| #include "mojo/edk/system/ports_message.h"
|
| +#include "mojo/edk/system/request_context.h"
|
|
|
| namespace mojo {
|
| namespace edk {
|
| @@ -716,6 +717,12 @@ void NodeController::OnAcceptBrokerClient(const ports::NodeName& from_node,
|
| void NodeController::OnPortsMessage(Channel::MessagePtr channel_message) {
|
| DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
|
|
|
| + // This is a singular chokepoint through which dispatcher port statuses may
|
| + // be changed without an explicit call to some Mojo system API. We need to
|
| + // ensure that a RequestContext exists in case a dispatcher has any watchers
|
| + // to notify.
|
| + RequestContext request_context;
|
| +
|
| void* data;
|
| size_t num_data_bytes;
|
| NodeChannel::GetPortsMessageData(
|
|
|