Merge "snapuserd: Improve EnsureSnapuserdConnected logic."

This commit is contained in:
David Anderson 2021-08-02 18:45:44 +00:00 committed by Gerrit Code Review
commit 2a1603d07e
3 changed files with 19 additions and 6 deletions

View file

@ -14,3 +14,6 @@ service snapuserd_proxy /system/bin/snapuserd -socket-handoff
user root
group root system
seclabel u:r:snapuserd:s0
on property:init.svc.snapuserd=stopped
setprop snapuserd.ready false

View file

@ -42,13 +42,15 @@ using namespace std::chrono_literals;
using android::base::unique_fd;
bool EnsureSnapuserdStarted() {
if (android::base::GetProperty("init.svc.snapuserd", "") == "running") {
return true;
if (android::base::GetProperty("init.svc.snapuserd", "") != "running") {
android::base::SetProperty("ctl.start", "snapuserd");
if (!android::base::WaitForProperty("init.svc.snapuserd", "running", 10s)) {
LOG(ERROR) << "Timed out waiting for snapuserd to start.";
return false;
}
}
android::base::SetProperty("ctl.start", "snapuserd");
if (!android::base::WaitForProperty("init.svc.snapuserd", "running", 10s)) {
LOG(ERROR) << "Timed out waiting for snapuserd to start.";
if (!android::base::WaitForProperty("snapuserd.ready", "true", 10s)) {
LOG(ERROR) << "Timed out waiting for snapuserd to be ready.";
return false;
}
return true;

View file

@ -291,6 +291,14 @@ bool SnapuserdServer::StartWithSocket(bool start_listening) {
AddWatchedFd(sockfd_, POLLIN);
// If started in first-stage init, the property service won't be online.
if (access("/dev/socket/property_service", F_OK) == 0) {
if (!android::base::SetProperty("snapuserd.ready", "true")) {
LOG(ERROR) << "Failed to set snapuserd.ready property";
return false;
}
}
LOG(DEBUG) << "Snapuserd server now accepting connections";
return true;
}