From 100df448e24188dcf744c676f997fa26042f650c Mon Sep 17 00:00:00 2001 From: Jakub Adam Date: Fri, 17 Oct 2014 07:58:51 +0200 Subject: [PATCH] filetransfer: transfer cancellation by local user --- src/core/sipe-ft-lync.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/core/sipe-ft-lync.c b/src/core/sipe-ft-lync.c index 2aa5a497..a191ac00 100644 --- a/src/core/sipe-ft-lync.c +++ b/src/core/sipe-ft-lync.c @@ -394,6 +394,37 @@ call_reject_cb(struct sipe_media_call *call, gboolean local) } static void +ft_lync_incoming_cancelled(struct sipe_file_transfer *ft) +{ + static const gchar *FILETRANSFER_CANCEL_REQUEST = + "" + "" + "%d" + "" + "%s" + "%s" + "" + "" + ""; + + struct sipe_file_transfer_lync *ft_private = SIPE_FILE_TRANSFER_PRIVATE; + struct sipe_media_stream *stream; + + send_ms_filetransfer_msg(g_strdup_printf(FILETRANSFER_CANCEL_REQUEST, + ft_private->request_id + 1, + ft_private->request_id, + ft_private->id, + ft_private->file_name), + ft_private, + NULL); + + stream = sipe_core_media_get_stream_by_id(ft_private->call, "data"); + if (stream) { + stream->read_cb = NULL; + } +} + +static void ft_lync_deallocate(struct sipe_file_transfer *ft) { struct sipe_media_call *call = SIPE_FILE_TRANSFER_PRIVATE->call; @@ -439,6 +470,7 @@ process_incoming_invite_ft_lync(struct sipe_core_private *sipe_private, call->candidate_pair_established_cb = candidate_pair_established_cb; ft_private->public.ft_init = ft_lync_incoming_init; + ft_private->public.ft_cancelled = ft_lync_incoming_cancelled; ft_private->public.ft_end = ft_lync_end; ft_private->public.ft_deallocate = ft_lync_deallocate; -- 2.11.4.GIT