| Index: mojo/system/core_impl.cc
|
| diff --git a/mojo/system/core_impl.cc b/mojo/system/core_impl.cc
|
| index 859617ae14d7b7056421cfd2b1a159a2d2151397..7477f9142a06f609b4ac44206965bc1595a7987a 100644
|
| --- a/mojo/system/core_impl.cc
|
| +++ b/mojo/system/core_impl.cc
|
| @@ -186,6 +186,13 @@ MojoResult CoreImpl::CreateMessagePipe(MojoHandle* message_pipe_handle0,
|
| return MOJO_RESULT_OK;
|
| }
|
|
|
| +// Implementation note: To properly cancel waiters and avoid other races, this
|
| +// does not transfer dispatchers from one handle to another, even when sending a
|
| +// message in-process. Instead, it must transfer the "contents" of the
|
| +// dispatcher to a new dispatcher, and then close the old dispatcher. If this
|
| +// isn't done, in the in-process case, calls on the old handle may complete
|
| +// after the the message has been received and a new handle created (and
|
| +// possibly even after calls have been made on the new handle).
|
| MojoResult CoreImpl::WriteMessage(MojoHandle message_pipe_handle,
|
| const void* bytes,
|
| uint32_t num_bytes,
|
|
|