diff options
Diffstat (limited to 'res/res_stasis_recording.c')
-rw-r--r-- | res/res_stasis_recording.c | 14 |
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, |