diff --git a/src/com/android/sip/SipAudioCallImpl.java b/src/com/android/sip/SipAudioCallImpl.java
index 73ecc89..15fc726 100644
--- a/src/com/android/sip/SipAudioCallImpl.java
+++ b/src/com/android/sip/SipAudioCallImpl.java
@@ -341,13 +341,6 @@
     }
 
     public synchronized void holdCall() throws SipException {
-        if (mHold) return;
-        if (mRtpSession != null) {
-            mHold = true;
-            mRtpSession.stopSending();
-            mRtpSession.stopReceiving();
-        }
-        /*
         try {
             if (mChangingSession) return;
             mChangingSession = true;
@@ -356,7 +349,6 @@
         } catch (Throwable e) {
             throwSipException(e);
         }
-        */
     }
 
     public synchronized void answerCall() throws SipException {
@@ -370,13 +362,6 @@
     }
 
     public synchronized void continueCall() throws SipException {
-        if (!mHold) return;
-        if (mRtpSession != null) {
-            mHold = false;
-            mRtpSession.startSending();
-            mRtpSession.startReceiving();
-        }
-        /*
         try {
             if (mChangingSession) return;
             mChangingSession = true;
@@ -385,7 +370,6 @@
         } catch (Throwable e) {
             throwSipException(e);
         }
-        */
     }
 
     private SessionDescription createOfferSessionDescription() {
