aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/telephony/domainselection/DomainSelectionResolver.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/android/internal/telephony/domainselection/DomainSelectionResolver.java')
-rw-r--r--src/java/com/android/internal/telephony/domainselection/DomainSelectionResolver.java11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/java/com/android/internal/telephony/domainselection/DomainSelectionResolver.java b/src/java/com/android/internal/telephony/domainselection/DomainSelectionResolver.java
index cbb74fadd7..65ac8b3ca7 100644
--- a/src/java/com/android/internal/telephony/domainselection/DomainSelectionResolver.java
+++ b/src/java/com/android/internal/telephony/domainselection/DomainSelectionResolver.java
@@ -150,9 +150,14 @@ public class DomainSelectionResolver {
throw new IllegalStateException("DomainSelection is not supported!");
}
- if (phone == null || !phone.isImsAvailable()) {
- // If ImsPhone is null or the binder of ImsService is not available,
- // CS domain is used for the telephony services.
+ if (phone == null || phone.getImsPhone() == null
+ || (!(isEmergency && selectorType == DomainSelectionService.SELECTOR_TYPE_CALLING)
+ && !phone.isImsAvailable())) {
+ // In case of emergency calls, to recover the temporary failure in IMS service
+ // connection, DomainSelection shall be started even when IMS isn't available.
+ // DomainSelector will keep finding next available transport.
+ // For other telephony services, if the binder of ImsService is not available,
+ // CS domain will be used.
return null;
}