diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 995957c..7488ffd 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -410,8 +410,6 @@
     }
 
     void handleSuccessfulOutgoing() {
-        setState(CallState.DIALING);
-
         // TODO(santoscordon): Replace this with state transitions related to "connecting".
         for (Listener l : mListeners) {
             l.onSuccessfulOutgoingCall(this);
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index a4b2086..078209e 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -123,7 +123,12 @@
         } else if (mPendingHandoffCalls.contains(call)) {
             updateHandoffCallServiceDescriptor(call.getOriginalCall(),
                     call.getCallService().getDescriptor());
+        } else {
+            Log.wtf(this, "unexpected successful call notification: %s", call);
+            return;
         }
+
+        markCallAsDialing(call);
     }
 
     @Override
@@ -384,6 +389,8 @@
         tempCall.setExtras(originalCall.getExtras());
         tempCall.setCallServiceSelector(originalCall.getCallServiceSelector());
         mPendingHandoffCalls.add(tempCall);
+        tempCall.addListener(this);
+
         Log.d(this, "Placing handoff call");
         tempCall.startOutgoing();
     }
@@ -588,6 +595,7 @@
         // Remove the transient handoff call object (don't disconnect because the call could still
         // be live).
         mPendingHandoffCalls.remove(handoffCall);
+        handoffCall.removeListener(this);
 
         if (wasSuccessful) {
             // Disconnect.
