| Index: ipc/ipc_mojo_bootstrap.cc
|
| diff --git a/ipc/ipc_mojo_bootstrap.cc b/ipc/ipc_mojo_bootstrap.cc
|
| index 1552f315d136cc90fea4f030355306749fbb048f..5a60ead81ad30b348cc3958b09e204bb60e23146 100644
|
| --- a/ipc/ipc_mojo_bootstrap.cc
|
| +++ b/ipc/ipc_mojo_bootstrap.cc
|
| @@ -602,8 +602,7 @@ class ChannelAssociatedGroupController
|
| DCHECK(mojo::IsValidInterfaceId(id));
|
|
|
| base::AutoLock locker(lock_);
|
| - Endpoint* endpoint =
|
| - GetEndpointForDispatch(id, false /* close_on_insert */);
|
| + Endpoint* endpoint = GetEndpointForDispatch(id, true /* create */);
|
| mojo::InterfaceEndpointClient* client =
|
| endpoint ? endpoint->client() : nullptr;
|
| if (!client || !endpoint->task_runner()->BelongsToCurrentThread()) {
|
| @@ -652,7 +651,7 @@ class ChannelAssociatedGroupController
|
| DCHECK(mojo::IsValidInterfaceId(id) && !mojo::IsMasterInterfaceId(id));
|
|
|
| base::AutoLock locker(lock_);
|
| - Endpoint* endpoint = GetEndpointForDispatch(id, true /* close_on_insert */);
|
| + Endpoint* endpoint = GetEndpointForDispatch(id, false /* create */);
|
| if (!endpoint)
|
| return;
|
|
|
| @@ -680,7 +679,7 @@ class ChannelAssociatedGroupController
|
|
|
| base::AutoLock locker(lock_);
|
| Endpoint* endpoint =
|
| - GetEndpointForDispatch(interface_id, true /* close_on_insert */);
|
| + GetEndpointForDispatch(interface_id, false /* create */);
|
| if (!endpoint)
|
| return;
|
|
|
| @@ -706,20 +705,16 @@ class ChannelAssociatedGroupController
|
| RaiseError();
|
| }
|
|
|
| - Endpoint* GetEndpointForDispatch(mojo::InterfaceId id, bool close_on_insert) {
|
| + Endpoint* GetEndpointForDispatch(mojo::InterfaceId id, bool create) {
|
| lock_.AssertAcquired();
|
| + auto iter = endpoints_.find(id);
|
| + if (iter != endpoints_.end())
|
| + return iter->second.get();
|
| + if (!create)
|
| + return nullptr;
|
| bool inserted = false;
|
| Endpoint* endpoint = FindOrInsertEndpoint(id, &inserted);
|
| - if (inserted && close_on_insert) {
|
| - MarkClosedAndMaybeRemove(endpoint);
|
| - if (!mojo::IsMasterInterfaceId(id))
|
| - control_message_proxy_.NotifyPeerEndpointClosed(id);
|
| - return nullptr;
|
| - }
|
| -
|
| - if (endpoint->closed())
|
| - return nullptr;
|
| -
|
| + DCHECK(inserted);
|
| return endpoint;
|
| }
|
|
|
|
|