From 277ce6d0de701181693190515b8ef85e45c1626d Mon Sep 17 00:00:00 2001 From: Brian West Date: Tue, 2 Feb 2016 17:33:56 -0600 Subject: [PATCH] FS-8789: remove ability to swap to personal canvas while recording and prevent recording while personal canvas is on. --- src/mod/applications/mod_conference/conference_api.c | 9 +++++++++ src/mod/applications/mod_conference/conference_record.c | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/src/mod/applications/mod_conference/conference_api.c b/src/mod/applications/mod_conference/conference_api.c index 8a1266f82c..a6b3357187 100644 --- a/src/mod/applications/mod_conference/conference_api.c +++ b/src/mod/applications/mod_conference/conference_api.c @@ -1013,6 +1013,10 @@ switch_status_t conference_api_sub_vid_personal(conference_obj_t *conference, sw if (argv[2]) { on = switch_true(argv[2]); if (on) { + if (conference->record_count > 0) { + stream->write_function(stream, "-ERR conference is recording, not enabling vid-personal.\n"); + return SWITCH_STATUS_SUCCESS; + } conference_utils_set_flag(conference, CFLAG_PERSONAL_CANVAS); } else { conference_utils_clear_flag(conference, CFLAG_PERSONAL_CANVAS); @@ -2411,6 +2415,11 @@ switch_status_t conference_api_sub_record(conference_obj_t *conference, switch_s return SWITCH_STATUS_GENERR; } + if (conference_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS)) { + stream->write_function(stream, "-ERR Personal Canvas enabled, recording not permitted.\n"); + return SWITCH_STATUS_SUCCESS; + } + if (argv[3]) { if (argv[3]) { diff --git a/src/mod/applications/mod_conference/conference_record.c b/src/mod/applications/mod_conference/conference_record.c index 37d11178c3..2ff3ae4dbd 100644 --- a/src/mod/applications/mod_conference/conference_record.c +++ b/src/mod/applications/mod_conference/conference_record.c @@ -60,6 +60,11 @@ void conference_record_launch_thread(conference_obj_t *conference, char *path, i return; } + if (conference_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Personal Canvas enabled, recording not permitted.\n"); + return; + } + rec->conference = conference; rec->path = switch_core_strdup(pool, path); rec->pool = pool;