summaryrefslogtreecommitdiff
path: root/res/res_stasis_recording.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_stasis_recording.c')
-rw-r--r--res/res_stasis_recording.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/res/res_stasis_recording.c b/res/res_stasis_recording.c
index 575ccae1e..f62716826 100644
--- a/res/res_stasis_recording.c
+++ b/res/res_stasis_recording.c
@@ -231,10 +231,11 @@ static void *record_file(struct stasis_app_control *control,
recording = data;
ast_assert(recording != NULL);
- ao2_lock(recording);
- recording->state = STASIS_APP_RECORDING_STATE_RECORDING;
- recording_publish(recording);
- ao2_unlock(recording);
+ if (stasis_app_get_bridge(control)) {
+ ast_log(LOG_ERROR, "Cannot record channel while in bridge\n");
+ recording_fail(recording);
+ return NULL;
+ }
switch (recording->options->terminate_on) {
case STASIS_APP_RECORDING_TERMINATE_NONE:
@@ -258,6 +259,11 @@ static void *record_file(struct stasis_app_control *control,
return NULL;
}
+ ao2_lock(recording);
+ recording->state = STASIS_APP_RECORDING_STATE_RECORDING;
+ recording_publish(recording);
+ ao2_unlock(recording);
+
ast_play_and_record_full(chan,
NULL, /* playfile */
recording->absolute_name,