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

Side by Side Diff: components/nacl/renderer/plugin/service_runtime.cc

Issue 1153293003: NaCl cleanup: Stop connecting to the SRPC trusted command channel (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Make tests pass Created 5 years, 6 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 * Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #define NACL_LOG_MODULE_NAME "Plugin_ServiceRuntime" 7 #define NACL_LOG_MODULE_NAME "Plugin_ServiceRuntime"
8 8
9 #include "components/nacl/renderer/plugin/service_runtime.h" 9 #include "components/nacl/renderer/plugin/service_runtime.h"
10 10
(...skipping 24 matching lines...) Expand all
35 35
36 ServiceRuntime::ServiceRuntime(Plugin* plugin, 36 ServiceRuntime::ServiceRuntime(Plugin* plugin,
37 PP_Instance pp_instance, 37 PP_Instance pp_instance,
38 bool main_service_runtime, 38 bool main_service_runtime,
39 bool uses_nonsfi_mode) 39 bool uses_nonsfi_mode)
40 : plugin_(plugin), 40 : plugin_(plugin),
41 pp_instance_(pp_instance), 41 pp_instance_(pp_instance),
42 main_service_runtime_(main_service_runtime), 42 main_service_runtime_(main_service_runtime),
43 uses_nonsfi_mode_(uses_nonsfi_mode), 43 uses_nonsfi_mode_(uses_nonsfi_mode),
44 bootstrap_channel_(NACL_INVALID_HANDLE) { 44 bootstrap_channel_(NACL_INVALID_HANDLE) {
45 NaClSrpcChannelInitialize(&command_channel_);
46 } 45 }
47 46
48 bool ServiceRuntime::SetupCommandChannel() { 47 bool ServiceRuntime::SetupCommandChannel() {
49 NaClLog(4, "ServiceRuntime::SetupCommand (this=%p, subprocess=%p)\n", 48 NaClLog(4, "ServiceRuntime::SetupCommand (this=%p, subprocess=%p)\n",
50 static_cast<void*>(this), 49 static_cast<void*>(this),
51 static_cast<void*>(subprocess_.get())); 50 static_cast<void*>(subprocess_.get()));
52 // Set up the bootstrap channel in our subprocess so that we can establish 51 // Set up the bootstrap channel in our subprocess so that we can establish
53 // SRPC. 52 // SRPC.
54 subprocess_->set_channel(bootstrap_channel_); 53 subprocess_->set_channel(bootstrap_channel_);
55 54
56 if (uses_nonsfi_mode_) { 55 if (uses_nonsfi_mode_) {
57 // In non-SFI mode, no SRPC is used. Just skips and returns success. 56 // In non-SFI mode, no SRPC is used. Just skips and returns success.
58 return true; 57 return true;
59 } 58 }
60 59
61 if (!subprocess_->SetupCommand(&command_channel_)) { 60 return subprocess_->ConnectBootstrapSocket() &&
62 ErrorInfo error_info; 61 subprocess_->RetrieveSockAddr();
63 error_info.SetReport(PP_NACL_ERROR_SEL_LDR_COMMUNICATION_CMD_CHANNEL,
jvoung (off chromium) 2015/06/09 15:43:44 If want to keep this UMA stat (it's about 0.01%),
Mark Seaborn 2015/06/10 00:31:04 Oh, good point! I was deleting code without reall
64 "ServiceRuntime: command channel creation failed");
65 ReportLoadError(error_info);
66 return false;
67 }
68 return true;
69 } 62 }
70 63
71 void ServiceRuntime::StartSelLdr(const SelLdrStartParams& params, 64 void ServiceRuntime::StartSelLdr(const SelLdrStartParams& params,
72 pp::CompletionCallback callback) { 65 pp::CompletionCallback callback) {
73 NaClLog(4, "ServiceRuntime::Start\n"); 66 NaClLog(4, "ServiceRuntime::Start\n");
74 67
75 nacl::scoped_ptr<SelLdrLauncherChrome> 68 nacl::scoped_ptr<SelLdrLauncherChrome>
76 tmp_subprocess(new SelLdrLauncherChrome()); 69 tmp_subprocess(new SelLdrLauncherChrome());
77 if (NULL == tmp_subprocess.get()) { 70 if (NULL == tmp_subprocess.get()) {
78 NaClLog(LOG_ERROR, "ServiceRuntime::Start (subprocess create failed)\n"); 71 NaClLog(LOG_ERROR, "ServiceRuntime::Start (subprocess create failed)\n");
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 void ServiceRuntime::Shutdown() { 124 void ServiceRuntime::Shutdown() {
132 // Abandon callbacks, tell service threads to quit if they were 125 // Abandon callbacks, tell service threads to quit if they were
133 // blocked waiting for main thread operations to finish. Note that 126 // blocked waiting for main thread operations to finish. Note that
134 // some callbacks must still await their completion event, e.g., 127 // some callbacks must still await their completion event, e.g.,
135 // CallOnMainThread must still wait for the time out, or I/O events 128 // CallOnMainThread must still wait for the time out, or I/O events
136 // must finish, so resources associated with pending events cannot 129 // must finish, so resources associated with pending events cannot
137 // be deallocated. 130 // be deallocated.
138 131
139 // Note that this does waitpid() to get rid of any zombie subprocess. 132 // Note that this does waitpid() to get rid of any zombie subprocess.
140 subprocess_.reset(NULL); 133 subprocess_.reset(NULL);
141
142 NaClSrpcDtor(&command_channel_);
143 } 134 }
144 135
145 ServiceRuntime::~ServiceRuntime() { 136 ServiceRuntime::~ServiceRuntime() {
146 NaClLog(4, "ServiceRuntime::~ServiceRuntime (this=%p)\n", 137 NaClLog(4, "ServiceRuntime::~ServiceRuntime (this=%p)\n",
147 static_cast<void*>(this)); 138 static_cast<void*>(this));
148 // We do this just in case Shutdown() was not called. 139 // We do this just in case Shutdown() was not called.
149 subprocess_.reset(NULL); 140 subprocess_.reset(NULL);
150 } 141 }
151 142
152 } // namespace plugin 143 } // namespace plugin
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698