Merge "snapuserd: Improve EnsureSnapuserdConnected logic."
This commit is contained in:
commit
2a1603d07e
3 changed files with 19 additions and 6 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue