Revert "Revert "Add missing unregistrations when a connection ends.""

This reverts commit 207ec8c2dd1927edb5332afcafacccebfd2ca210.

Yes, this is a revert of a revert...IOW, I'm putting the original change
back in.

Original change information:
[[
  Bug: 22410282
  Change-Id: Ic2698d9ae768e27a346f71c7b0cd99c9a490e801
]]

Change-Id: I796bdc35ff727a46b766056ad9b2a4aabead0814
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 8c09a95..421fbda 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -581,10 +581,14 @@
      */
     void clearOriginalConnection() {
         if (mOriginalConnection != null) {
-            getPhone().unregisterForPreciseCallStateChanged(mHandler);
-            getPhone().unregisterForRingbackTone(mHandler);
-            getPhone().unregisterForHandoverStateChanged(mHandler);
-            getPhone().unregisterForDisconnect(mHandler);
+            if (getPhone() != null) {
+                getPhone().unregisterForPreciseCallStateChanged(mHandler);
+                getPhone().unregisterForRingbackTone(mHandler);
+                getPhone().unregisterForHandoverStateChanged(mHandler);
+                getPhone().unregisterForDisconnect(mHandler);
+            }
+            mOriginalConnection.removePostDialListener(mPostDialListener);
+            mOriginalConnection.removeListener(mOriginalConnectionListener);
             mOriginalConnection = null;
         }
     }
@@ -809,12 +813,7 @@
 
     private void close() {
         Log.v(this, "close");
-        if (getPhone() != null) {
-            getPhone().unregisterForPreciseCallStateChanged(mHandler);
-            getPhone().unregisterForRingbackTone(mHandler);
-            getPhone().unregisterForHandoverStateChanged(mHandler);
-        }
-        mOriginalConnection = null;
+        clearOriginalConnection();
         destroy();
     }