diff --git a/daemon/src/dbus/callmanager-introspec.xml b/daemon/src/dbus/callmanager-introspec.xml
index bf819e5cb6111091138c3ba8346edd8069130ce5..a7ce5f874e4a09d4f4ceec50557989b60ec2201e 100644
--- a/daemon/src/dbus/callmanager-introspec.xml
+++ b/daemon/src/dbus/callmanager-introspec.xml
@@ -81,6 +81,11 @@
                 The callID.
               </tp:docstring>
             </arg>
+            <arg type="b" name="isHungUp" direction="out">
+              <tp:docstring>
+                Returns true is the call has been hungup. False otherwise.
+              </tp:docstring>
+            </arg>
         </method>
 
         <method name="hangUpConference" tp:name-for-bindings="hangUpConference">
@@ -93,6 +98,11 @@
                 The unique conference ID.
               </tp:docstring>
             </arg>
+            <arg type="b" name="isHungUp" direction="out">
+              <tp:docstring>
+                Returns true is the conference has been hungup. False otherwise.
+              </tp:docstring>
+            </arg>
         </method>
 
         <method name="hold" tp:name-for-bindings="hold">
diff --git a/daemon/src/dbus/callmanager.cpp b/daemon/src/dbus/callmanager.cpp
index 2f8464a7f59fc90ce4aba6da4b70a3bcab5558b9..31160fb5867524a0717f937e339a6290bdbbc4f3 100644
--- a/daemon/src/dbus/callmanager.cpp
+++ b/daemon/src/dbus/callmanager.cpp
@@ -96,16 +96,16 @@ CallManager::accept(const std::string& callID)
     Manager::instance().answerCall(callID);
 }
 
-void
+bool
 CallManager::hangUp(const std::string& callID)
 {
-    Manager::instance().hangupCall(callID);
+    return Manager::instance().hangupCall(callID);
 }
 
-void
+bool
 CallManager::hangUpConference(const std::string& confID)
 {
-    Manager::instance().hangupConference(confID);
+    return Manager::instance().hangupConference(confID);
 }
 
 void
diff --git a/daemon/src/dbus/callmanager.h b/daemon/src/dbus/callmanager.h
index 0c04eca07562af77521cc9951492420850ba72ec..143ae318b0a05ce8f682606442e132a9984dd18c 100644
--- a/daemon/src/dbus/callmanager.h
+++ b/daemon/src/dbus/callmanager.h
@@ -78,7 +78,7 @@ class CallManager
 
         void refuse(const std::string& callID);
         void accept(const std::string& callID);
-        void hangUp(const std::string& callID);
+        bool hangUp(const std::string& callID);
         void hold(const std::string& callID);
         void unhold(const std::string& callID);
         void transfer(const std::string& callID, const std::string& to);
@@ -94,7 +94,7 @@ class CallManager
         void addMainParticipant(const std::string& confID);
         void detachParticipant(const std::string& callID);
         void joinConference(const std::string& sel_confID, const std::string& drag_confID);
-        void hangUpConference(const std::string& confID);
+        bool hangUpConference(const std::string& confID);
         void holdConference(const std::string& confID);
         void unholdConference(const std::string& confID);
         std::vector<std::string> getConferenceList();
diff --git a/gnome/src/dbus/callmanager-introspec.xml b/gnome/src/dbus/callmanager-introspec.xml
index bf819e5cb6111091138c3ba8346edd8069130ce5..a7ce5f874e4a09d4f4ceec50557989b60ec2201e 100644
--- a/gnome/src/dbus/callmanager-introspec.xml
+++ b/gnome/src/dbus/callmanager-introspec.xml
@@ -81,6 +81,11 @@
                 The callID.
               </tp:docstring>
             </arg>
+            <arg type="b" name="isHungUp" direction="out">
+              <tp:docstring>
+                Returns true is the call has been hungup. False otherwise.
+              </tp:docstring>
+            </arg>
         </method>
 
         <method name="hangUpConference" tp:name-for-bindings="hangUpConference">
@@ -93,6 +98,11 @@
                 The unique conference ID.
               </tp:docstring>
             </arg>
+            <arg type="b" name="isHungUp" direction="out">
+              <tp:docstring>
+                Returns true is the conference has been hungup. False otherwise.
+              </tp:docstring>
+            </arg>
         </method>
 
         <method name="hold" tp:name-for-bindings="hold">
diff --git a/gnome/src/dbus/dbus.c b/gnome/src/dbus/dbus.c
index 167c1f2f61e6f8c89d4d3d1eadebef16a1f44cea..41f002c9e4e9615834c8d8a4b14ac51a715af13e 100644
--- a/gnome/src/dbus/dbus.c
+++ b/gnome/src/dbus/dbus.c
@@ -972,8 +972,10 @@ dbus_stop_recorded_file_playback(const gchar *filepath)
 }
 
 static void
-hang_up_reply_cb(G_GNUC_UNUSED DBusGProxy *proxy, GError *error, G_GNUC_UNUSED gpointer userdata)
+hang_up_reply_cb(G_GNUC_UNUSED DBusGProxy *proxy, gboolean is_hung_up, GError *error, G_GNUC_UNUSED gpointer userdata)
 {
+    if (!is_hung_up)
+        g_warning("Did not hang up properly");
     check_error(error);
 }