summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.com>2012-02-24 21:41:07 -0500
committerOlivier CrĂȘte <olivier.crete@collabora.com>2012-02-24 21:41:07 -0500
commite8bc26e300582652b392341569403bf58dcbbd6c (patch)
tree8d3e6817ce931ba058f804df25d97a3afe259d1a
parent27fe5141c7a7ebf3873fc1ffde568481a42ae860 (diff)
Hangup call on receiving error if can't request receiving
-rw-r--r--rakia/call-channel.c16
-rw-r--r--rakia/call-channel.h6
-rw-r--r--rakia/call-stream.c5
3 files changed, 26 insertions, 1 deletions
diff --git a/rakia/call-channel.c b/rakia/call-channel.c
index 89b4887..5f9de68 100644
--- a/rakia/call-channel.c
+++ b/rakia/call-channel.c
@@ -677,3 +677,19 @@ rakia_call_channel_is_connected (TpBaseCallChannel *self)
*/
return TRUE;
}
+
+void
+rakia_call_channel_hangup_error (RakiaCallChannel *self,
+ TpCallStateChangeReason reason,
+ const gchar *dbus_reason,
+ const gchar *message)
+{
+ TpHandle self_handle = tp_base_channel_get_self_handle (
+ TP_BASE_CHANNEL (self));
+
+ rakia_call_channel_hangup (TP_BASE_CALL_CHANNEL (self),
+ reason, dbus_reason, message);
+
+ tp_base_call_channel_set_state (TP_BASE_CALL_CHANNEL (self),
+ TP_CALL_STATE_ENDED, self_handle, reason, dbus_reason, message);
+}
diff --git a/rakia/call-channel.h b/rakia/call-channel.h
index a4f7733..06c2eaf 100644
--- a/rakia/call-channel.h
+++ b/rakia/call-channel.h
@@ -60,6 +60,12 @@ GType rakia_call_channel_get_type (void);
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
RAKIA_TYPE_CALL_CHANNEL, RakiaCallChannelClass))
+void
+rakia_call_channel_hangup_error (RakiaCallChannel *self,
+ TpCallStateChangeReason reason,
+ const gchar *dbus_reason,
+ const gchar *message);
+
G_END_DECLS
#endif /* #ifndef __RAKIA_CALL_CHANNEL_H__*/
diff --git a/rakia/call-stream.c b/rakia/call-stream.c
index 4f13849..9337ede 100644
--- a/rakia/call-stream.c
+++ b/rakia/call-stream.c
@@ -306,7 +306,10 @@ rakia_call_stream_report_receiving_failure (TpBaseMediaCallStream *bmcs,
g_object_get (self, "can-request-receiving", &can_request_receiving, NULL);
if (!can_request_receiving)
{
- g_warning ("We should fail the whole call now");
+ /* Failing the whole call because we can't stop receivingt */
+ DEBUG ("Closing channel because of error: %s", message);
+ rakia_call_channel_hangup_error (priv->channel, reason, dbus_reason,
+ message);
return;
}