Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(877)

Side by Side Diff: mojo/edk/system/message_pipe_dispatcher.cc

Issue 1558643002: Fix Mojo broker crash on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/edk/system/child_broker_host.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/edk/system/message_pipe_dispatcher.h" 5 #include "mojo/edk/system/message_pipe_dispatcher.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <utility> 10 #include <utility>
(...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 } else { 979 } else {
980 CHECK_NE(non_transferable_state_, CLOSED); 980 CHECK_NE(non_transferable_state_, CLOSED);
981 internal::g_broker->CloseMessagePipe(pipe_id_, this); 981 internal::g_broker->CloseMessagePipe(pipe_id_, this);
982 non_transferable_state_ = CLOSED; 982 non_transferable_state_ = CLOSED;
983 } 983 }
984 channel_ = nullptr; 984 channel_ = nullptr;
985 if (close_requested_) { 985 if (close_requested_) {
986 // Balance AddRef in CloseOnIO. 986 // Balance AddRef in CloseOnIO.
987 call_release = true; 987 call_release = true;
988 } 988 }
989 } else if (!channel_ && !transferable_ &&
990 non_transferable_state_ == WAITING_FOR_CONNECT_TO_CLOSE) {
991 // Balance AddRef in CloseOnIO.
992 call_release = true;
989 } 993 }
990 awakable_list_.AwakeForStateChange(GetHandleSignalsStateImplNoLock()); 994 awakable_list_.AwakeForStateChange(GetHandleSignalsStateImplNoLock());
991 started_transport_.Release(); 995 started_transport_.Release();
992 } else { 996 } else {
993 // We must be waiting to call ReleaseHandle. It will call Shutdown. 997 // We must be waiting to call ReleaseHandle. It will call Shutdown.
994 } 998 }
995 999
996 if (call_release) 1000 if (call_release)
997 Release(); 1001 Release();
998 } 1002 }
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1056 // PostTask since the broker can call us back synchronously. 1060 // PostTask since the broker can call us back synchronously.
1057 internal::g_io_thread_task_runner->PostTask( 1061 internal::g_io_thread_task_runner->PostTask(
1058 FROM_HERE, 1062 FROM_HERE,
1059 base::Bind(&Broker::ConnectMessagePipe, 1063 base::Bind(&Broker::ConnectMessagePipe,
1060 base::Unretained(internal::g_broker), pipe_id_, 1064 base::Unretained(internal::g_broker), pipe_id_,
1061 base::Unretained(this))); 1065 base::Unretained(this)));
1062 } 1066 }
1063 1067
1064 } // namespace edk 1068 } // namespace edk
1065 } // namespace mojo 1069 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/child_broker_host.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698