diff --git a/src/call.cpp b/src/call.cpp
index a0a9942acd28c52c964fef30486d101cfb9853ed..964951ed9878f7c8ce8737721df1eb88d03fdeaf 100644
--- a/src/call.cpp
+++ b/src/call.cpp
@@ -75,8 +75,12 @@ Call::Call(const CallID& id, Call::CallType type)
 
 Call::~Call()
 {
-   _debug("CALL::Destructor for this clss is called \n");
-   recAudio.closeFile();
+   _debug("CALL::~Call(): Destructor for this clss is called \n");
+   
+   if(recAudio.isOpenFile()) {
+     _debug("CALL::~Call(): A recording file is open, close it \n");
+     recAudio.closeFile();
+   }
 }
 
 void 
diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp
index 855755218ee646e32ec16f1c7125826bbed74eae..26324a44444059f3aaedfa3906e7aeb23354d4a3 100644
--- a/src/managerimpl.cpp
+++ b/src/managerimpl.cpp
@@ -636,7 +636,6 @@ ManagerImpl::peerHungupCall(const CallID& id)
     _debug("ManagerImpl::peerHungupCall():this function is called when peer hangup \n");
     PulseLayer *pulselayer;
     AccountID accountid;
-    bool returnValue;
 
     accountid = getAccountFromCall( id );
     if (accountid == AccountNULL) {
@@ -652,8 +651,6 @@ ManagerImpl::peerHungupCall(const CallID& id)
         switchCall("");
     }
 
-    returnValue = getAccountLink(accountid)->hangup(id);
-
     removeWaitingCall(id);
     removeCallAccount(id);
   
diff --git a/src/plug-in/audiorecorder/audiorecord.cpp b/src/plug-in/audiorecorder/audiorecord.cpp
index dab527f0eab710a407a6f1190e039b26a98d6794..b547d06933a5aab43ed1db249b46f6b9b033a617 100644
--- a/src/plug-in/audiorecorder/audiorecord.cpp
+++ b/src/plug-in/audiorecorder/audiorecord.cpp
@@ -123,6 +123,15 @@ bool AudioRecord::isFileExist() {
   return false;  
 }
 
+bool AudioRecord::isRecording() {
+  _debug("AudioRecording::setRecording() \n");
+  
+  if(recordingEnabled_)
+    return true;
+  else 
+    return false;
+}
+
 
 bool AudioRecord::setRecording() {
   _debug("AudioRecord::setRecording()\n");
diff --git a/src/plug-in/audiorecorder/audiorecord.h b/src/plug-in/audiorecorder/audiorecord.h
index 45a3875bef42c3f024a0ef33abeb3ed662e485cd..69ed651225517f0539377dc18a2f6c9bc0f66a13 100644
--- a/src/plug-in/audiorecorder/audiorecord.h
+++ b/src/plug-in/audiorecorder/audiorecord.h
@@ -80,6 +80,11 @@ public:
    */
   bool isFileExist();
 
+  /**
+   * Check recording state 
+   */ 
+  bool isRecording();
+
   /**
    * Set recording flag
    */
diff --git a/src/sipvoiplink.cpp b/src/sipvoiplink.cpp
index 48bb8886f6d8d62ec3627feb870be8eb4ad0c9bf..416f77e60b6c55e348148fed994c303db5014a39 100644
--- a/src/sipvoiplink.cpp
+++ b/src/sipvoiplink.cpp
@@ -937,7 +937,7 @@ void
 SIPVoIPLink::SIPCallClosed(SIPCall *call) 
 {
 
-  _debug("SIPVoIPLink::SIPCallClosed():: function called when peer hangup");
+    _debug("SIPVoIPLink::SIPCallClosed():: function called when peer hangup");
     // it was without did before
     //SIPCall* call = findSIPCallWithCid(event->cid);
     if (!call) { return; }
@@ -951,6 +951,7 @@ SIPVoIPLink::SIPCallClosed(SIPCall *call)
     }
     _debug("After close RTP\n");
     Manager::instance().peerHungupCall(id);
+    terminateSIPCall();
     removeCall(id);
     _debug("After remove call ID\n");
 }