diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index 3811de1..99731d7 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -33,6 +33,7 @@
 import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.Set;
+import java.util.concurrent.CopyOnWriteArraySet;
 
 /**
  * Singleton.
@@ -72,7 +73,7 @@
      * The main call repository. Keeps an instance of all live calls. New incoming and outgoing
      * calls are added to the map and removed when the calls move to the disconnected state.
      */
-    private final Set<Call> mCalls = new LinkedHashSet<>();
+    private final Set<Call> mCalls = new CopyOnWriteArraySet<Call>();
 
     private final DtmfLocalTonePlayer mDtmfLocalTonePlayer = new DtmfLocalTonePlayer();
     private final InCallController mInCallController = new InCallController();
diff --git a/src/com/android/telecomm/TelecommServiceImpl.java b/src/com/android/telecomm/TelecommServiceImpl.java
index 9aa4687..f1ab6c0 100644
--- a/src/com/android/telecomm/TelecommServiceImpl.java
+++ b/src/com/android/telecomm/TelecommServiceImpl.java
@@ -68,12 +68,6 @@
                     case MSG_SHOW_CALL_SCREEN:
                         mCallsManager.getInCallController().bringToForeground(msg.arg1 == 1);
                         break;
-                    case MSG_IS_IN_A_PHONE_CALL:
-                        result = mCallsManager.hasAnyCalls();
-                        break;
-                    case MSG_IS_RINGING:
-                        result = mCallsManager.hasRingingCall();
-                        break;
                     case MSG_END_CALL:
                         result = endCallInternal();
                         break;
@@ -102,11 +96,9 @@
 
     private static final int MSG_SILENCE_RINGER = 1;
     private static final int MSG_SHOW_CALL_SCREEN = 2;
-    private static final int MSG_IS_IN_A_PHONE_CALL = 3;
-    private static final int MSG_IS_RINGING = 4;
-    private static final int MSG_END_CALL = 5;
-    private static final int MSG_ACCEPT_RINGING_CALL = 6;
-    private static final int MSG_CANCEL_MISSED_CALLS_NOTIFICATION = 7;
+    private static final int MSG_END_CALL = 3;
+    private static final int MSG_ACCEPT_RINGING_CALL = 4;
+    private static final int MSG_CANCEL_MISSED_CALLS_NOTIFICATION = 5;
 
     /** The singleton instance. */
     private static TelecommServiceImpl sInstance;
@@ -226,7 +218,9 @@
     @Override
     public boolean isInAPhoneCall() {
         enforceReadPermission();
-        return (boolean) sendRequest(MSG_IS_IN_A_PHONE_CALL);
+        // Do not use sendRequest() with this method since it could cause a deadlock with
+        // audio service, which we call into from the main thread: AudioManager.setMode().
+        return mCallsManager.hasAnyCalls();
     }
 
     /**
@@ -235,7 +229,7 @@
     @Override
     public boolean isRinging() {
         enforceReadPermission();
-        return (boolean) sendRequest(MSG_IS_RINGING);
+        return mCallsManager.hasRingingCall();
     }
 
     /**
