ARI recordings: Issue HTTP failures for recording requests with file conflicts
[asterisk/asterisk.git] / res / res_stasis_recording.c
index f627168..bd2177a 100644 (file)
@@ -348,6 +348,14 @@ struct stasis_app_recording *stasis_app_control_record(
        recording->control = control;
        recording->state = STASIS_APP_RECORDING_STATE_QUEUED;
 
+       if ((recording->options->if_exists == AST_RECORD_IF_EXISTS_FAIL) &&
+                       (ast_fileexists(recording->absolute_name, NULL, NULL))) {
+               ast_log(LOG_WARNING, "Recording file '%s' already exists and ifExists option is failure.\n",
+                       recording->absolute_name);
+               errno = EEXIST;
+               return NULL;
+       }
+
        {
                RAII_VAR(struct stasis_app_recording *, old_recording, NULL,
                        ao2_cleanup);
@@ -564,7 +572,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Stasis application recording support",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Stasis application recording support",
        .load = load_module,
        .unload = unload_module,
-       .nonoptreq = "res_stasis");
+       .nonoptreq = "res_stasis",
+       .load_pri = AST_MODPRI_APP_DEPEND);