提交 a0662883 编写于 作者: S Simon Fels

Check system commands for result and return error if needed

上级 fce7466f
......@@ -37,6 +37,17 @@ PlatformApi::PlatformApi() {
PlatformApi::~PlatformApi() {
}
void PlatformApi::wait_for_process(core::posix::ChildProcess &process,
anbox::protobuf::bridge::Void *response) {
const auto result = process.wait_for(core::posix::wait::Flags::untraced);
if (result.status != core::posix::wait::Result::Status::exited ||
result.detail.if_exited.status != core::posix::exit::Status::success) {
response->set_error("Failed to install application");
// FIXME once we add proper error codes/domains we need to add structured error
// info the response here.
}
}
void PlatformApi::install_application(anbox::protobuf::bridge::InstallApplication const *request,
anbox::protobuf::bridge::Void *response,
google::protobuf::Closure *done) {
......@@ -49,7 +60,7 @@ void PlatformApi::install_application(anbox::protobuf::bridge::InstallApplicatio
};
auto process = core::posix::exec("/system/bin/sh", argv, common_env, core::posix::StandardStream::empty);
process.wait_for(core::posix::wait::Flags::untraced);
wait_for_process(process, response);
done->Run();
}
......@@ -70,7 +81,7 @@ void PlatformApi::launch_application(anbox::protobuf::bridge::LaunchApplication
};
auto process = core::posix::exec("/system/bin/sh", argv, common_env, core::posix::StandardStream::empty);
process.wait_for(core::posix::wait::Flags::untraced);
wait_for_process(process, response);
done->Run();
}
......@@ -91,7 +102,7 @@ void PlatformApi::set_dns_servers(anbox::protobuf::bridge::SetDnsServers const *
argv.push_back(request->servers(n).address());
auto process = core::posix::exec("/system/bin/ndc", argv, common_env, core::posix::StandardStream::empty);
process.wait_for(core::posix::wait::Flags::untraced);
wait_for_process(process, response);
done->Run();
}
......
......@@ -24,6 +24,12 @@ class Closure;
} // namespace protobuf
} // namespace google
namespace core {
namespace posix {
class ChildProcess;
} // posix
} // core
namespace anbox {
namespace protobuf {
namespace bridge {
......@@ -50,6 +56,10 @@ public:
void set_dns_servers(anbox::protobuf::bridge::SetDnsServers const *request,
anbox::protobuf::bridge::Void *response,
google::protobuf::Closure *done);
private:
void wait_for_process(core::posix::ChildProcess &process,
anbox::protobuf::bridge::Void *response);
};
} // namespace android
} // namespace anbox
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册