summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2018-11-26 16:10:57 -0800
committerBrad Ebinger <breadley@google.com>2018-11-27 16:25:05 -0800
commit0eb053e7cf651965f17e930d41301721a56ed871 (patch)
treec350d887740440ed1e8fd701c8b77a2bef791bda
parent49fd6b2abee0ecec762a456adb65e3db5bf38c8e (diff)
downloadims-0eb053e7cf651965f17e930d41301721a56ed871.tar.gz
Do not start init until ACTION_UCE_SERVICE_UP
We were trying to get the UCE service before it was sending the correct intent, which would sometimes cause it to lock up (in certain race conditions). Remove init when starting RCS service as well as when IMS is connected. The UCE_SERVICE_UP intent is sticky, so there is no problem restarting the RcsService if it crashes. Bug: 119309891 Test: Manual Change-Id: I39eeb5ca497408893b8a3e4e5b5644cfcecadf35
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/RcsService.java3
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java32
2 files changed, 7 insertions, 28 deletions
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsService.java b/rcs/rcsservice/src/com/android/service/ims/RcsService.java
index 01f9fbd..c41e092 100644
--- a/rcs/rcsservice/src/com/android/service/ims/RcsService.java
+++ b/rcs/rcsservice/src/com/android/service/ims/RcsService.java
@@ -379,9 +379,6 @@ public class RcsService extends Service{
@Override
public void onImsConnected(int imsRadioTech) {
logger.debug("onImsConnected imsRadioTech=" + imsRadioTech);
- if(mRcsStackAdaptor != null) {
- mRcsStackAdaptor.checkSubService();
- }
if(mPublication != null) {
mPublication.onImsConnected();
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java b/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java
index bd0f89c..d8cd345 100644
--- a/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java
+++ b/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java
@@ -515,9 +515,8 @@ public class RcsStackAdaptor{
mStackService = mImsUceManager.getUceServiceInstance();
logger.debug("doInitImsUceService mStackService=" + mStackService);
- if (mStackService != null) {
- startInitPresenceTimer(0, PRESENCE_INIT_TYPE_RCS_SERVICE_AVAILABLE);
- }
+ // Do not connect to vendor UCE stack until ACTION_UCE_SERVICE_UP is called.
+ // The intent is sticky, so if we crash, we will get the UCE_SERVICE_UP intent again.
}
}
@@ -560,7 +559,8 @@ public class RcsStackAdaptor{
boolean serviceStatus = false;
serviceStatus = uceService.getServiceStatus();
- if (true == serviceStatus && mStackPresService == null) {//init only once.
+ //init only once and ensure connection to UCE service is available.
+ if (true == serviceStatus && mStackPresService == null && mStackService != null) {
logger.print("initAllService : serviceStatus = true ");
logger.debug("Create PresService");
mStackPresenceServiceHandle = mStackService.createPresenceService(
@@ -576,7 +576,9 @@ public class RcsStackAdaptor{
mStackPresService = mStackService.getPresenceService();
ret = 0;
} else {
- logger.error("initAllService : serviceStatus = false ");
+ logger.error("initAllService : serviceStatus = false - serviceStatus: "
+ + serviceStatus + ", mStackPresService: " + mStackPresService
+ + ", mStackService: " + mStackService);
}
} catch (RemoteException e) {
logger.error("initAllServices : DeadObjectException dialog ");
@@ -587,26 +589,6 @@ public class RcsStackAdaptor{
return ret;
}
- // Init sub service when IMS get registered.
- public void checkSubService() {
- logger.debug("checkSubService");
- synchronized (mSyncObj) {
- if (mStackPresService == null) {
- // Cancel the retry timer.
- if (mIsIniting) {
- if (mRetryAlarmIntent != null) {
- mAlarmManager.cancel(mRetryAlarmIntent);
- mRetryAlarmIntent = null;
- }
- mIsIniting = false;
- }
-
- // force to init imediately.
- startInitPresenceTimer(0, PRESENCE_INIT_TYPE_IMS_REGISTERED);
- }
- }
- }
-
public void startInitThread(int times){
final int currentRetry = times;
Thread thread = new Thread(() -> {