diff options
-rw-r--r-- | rakia/call-channel.c | 16 | ||||
-rw-r--r-- | rakia/call-channel.h | 6 | ||||
-rw-r--r-- | rakia/call-stream.c | 5 |
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; } |