summaryrefslogtreecommitdiff
path: root/cmds/servicemanager/ServiceManager.cpp
diff options
context:
space:
mode:
author Devin Moore <devinmoore@google.com> 2020-08-07 16:41:15 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2020-08-07 16:41:15 +0000
commit6cf263ff39ed376bd03457db3578bebb21cb0cec (patch)
tree77da04b74fcd02b6dee45c3306ab8df57f464d9b /cmds/servicemanager/ServiceManager.cpp
parent421f43b3401fa23aaf039254c3522a45f1a714dc (diff)
parent19b57edfb2c9b86e558849910aed8194e41c57b7 (diff)
Merge "servicemanager: Overwrite old service when a new one is registered" am: 9790d930d5 am: 9fb40a4ffb am: e90f7bb197 am: 19b57edfb2
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1393259 Change-Id: Id211edffc61e2371cd619e71b4952495c422e5c3
Diffstat (limited to 'cmds/servicemanager/ServiceManager.cpp')
-rw-r--r--cmds/servicemanager/ServiceManager.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/cmds/servicemanager/ServiceManager.cpp b/cmds/servicemanager/ServiceManager.cpp
index 1f9892a262..e80c3210f0 100644
--- a/cmds/servicemanager/ServiceManager.cpp
+++ b/cmds/servicemanager/ServiceManager.cpp
@@ -213,17 +213,18 @@ Status ServiceManager::addService(const std::string& name, const sp<IBinder>& bi
return Status::fromExceptionCode(Status::EX_ILLEGAL_STATE);
}
- auto entry = mNameToService.emplace(name, Service {
+ // Overwrite the old service if it exists
+ mNameToService[name] = Service {
.binder = binder,
.allowIsolated = allowIsolated,
.dumpPriority = dumpPriority,
.debugPid = ctx.debugPid,
- });
+ };
auto it = mNameToRegistrationCallback.find(name);
if (it != mNameToRegistrationCallback.end()) {
for (const sp<IServiceCallback>& cb : it->second) {
- entry.first->second.guaranteeClient = true;
+ mNameToService[name].guaranteeClient = true;
// permission checked in registerForNotifications
cb->onRegistration(name, binder);
}