Index: remoting/host/desktop_process.cc |
diff --git a/remoting/host/desktop_process.cc b/remoting/host/desktop_process.cc |
index b0afa8e16d072444577e019908b732179b927839..e59b8a58be8e2d5ee6f864ad8783e5bc268dc0a7 100644 |
--- a/remoting/host/desktop_process.cc |
+++ b/remoting/host/desktop_process.cc |
@@ -82,6 +82,9 @@ void DesktopProcess::OnChannelConnected(int32_t peer_pid) { |
void DesktopProcess::OnChannelError() { |
// Shutdown the desktop process. |
+ IPC::AttachmentBroker* broker = IPC::AttachmentBroker::GetGlobal(); |
+ if (broker && !broker->IsPrivilegedBroker()) |
+ broker->DeregisterBrokerCommunicationChannel(daemon_channel_.get()); |
daemon_channel_.reset(); |
if (desktop_agent_.get()) { |
desktop_agent_->Stop(); |
@@ -141,14 +144,10 @@ bool DesktopProcess::Start( |
IPC::ChannelProxy::Create(daemon_channel_name_, IPC::Channel::MODE_CLIENT, |
this, io_task_runner.get()); |
- // Attachment broker may be already created in tests. |
- if (!IPC::AttachmentBroker::GetGlobal()) |
- attachment_broker_ = IPC::AttachmentBrokerUnprivileged::CreateBroker(); |
- |
- if (attachment_broker_) { |
- attachment_broker_->DesignateBrokerCommunicationChannel( |
- daemon_channel_.get()); |
- } |
+ IPC::AttachmentBrokerUnprivileged::CreateBrokerIfNeeded(); |
+ IPC::AttachmentBroker* broker = IPC::AttachmentBroker::GetGlobal(); |
+ if (broker && !broker->IsPrivilegedBroker()) |
+ broker->RegisterBrokerCommunicationChannel(daemon_channel_.get()); |
// Pass |desktop_pipe| to the daemon. |
daemon_channel_->Send( |