]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-6893 [mod_conference] recording auto creates file path if not exists
authorAntonio <asilva@wirelessmundi.com>
Wed, 21 Dec 2016 12:53:18 +0000 (13:53 +0100)
committerAntonio <asilva@wirelessmundi.com>
Wed, 21 Dec 2016 12:53:18 +0000 (13:53 +0100)
src/mod/applications/mod_conference/conference_record.c

index 218a057e00fda269915830a3899075e119311318..64a444cdee06d750ac6111696bd2897f54f62581 100644 (file)
@@ -247,7 +247,26 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
 
                }
        }
-       
+
+       /* auto-create path */
+       if (rec->path && !strstr(rec->path, SWITCH_URL_SEPARATOR)) {
+               char *p;
+               char *path = switch_core_strdup(conference->pool, rec->path);
+
+               if ((p = strrchr(path, *SWITCH_PATH_SEPARATOR))) {
+                       *p = '\0';
+
+                       while(*path == '{') {
+                               if ((p = switch_find_end_paren(path, '{', '}'))) {
+                                       path = p + 1;
+                                       while(*path == ' ') path++;
+                               }
+                       }
+
+                       switch_dir_make_recursive(path, SWITCH_DEFAULT_DIR_PERMS, conference->pool);
+               }
+       }
+
        if (switch_core_file_open(&member->rec->fh, rec->path, (uint8_t) conference->channels, conference->rate, flags, rec->pool) != SWITCH_STATUS_SUCCESS) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Opening File [%s]\n", rec->path);