diff --git a/src/dvr/dvr_autorec.c b/src/dvr/dvr_autorec.c index 3a5c641c..e35b1515 100644 --- a/src/dvr/dvr_autorec.c +++ b/src/dvr/dvr_autorec.c @@ -176,7 +176,7 @@ dvr_autorec_create(const char *uuid, htsmsg_t *conf) dae->dae_weekdays = 0x7f; dae->dae_pri = DVR_PRIO_NORMAL; dae->dae_start = -1; - dae->dae_config = dvr_config_find_by_name_default(""); + dae->dae_config = dvr_config_find_by_name_default(NULL); LIST_INSERT_HEAD(&dae->dae_config->dvr_autorec_entries, dae, dae_config_link); TAILQ_INSERT_TAIL(&autorec_entries, dae, dae_link); @@ -1072,7 +1072,7 @@ autorec_destroy_by_config(dvr_config_t *kcfg, int delconf) while((dae = LIST_FIRST(&kcfg->dvr_autorec_entries)) != NULL) { LIST_REMOVE(dae, dae_config_link); if (cfg == NULL && delconf) - cfg = dvr_config_find_by_name_default(""); + cfg = dvr_config_find_by_name_default(NULL); if (cfg) LIST_INSERT_HEAD(&cfg->dvr_autorec_entries, dae, dae_config_link); dae->dae_config = cfg; diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index 00c15922..e64450e1 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -37,6 +37,7 @@ int dvr_iov_max; struct dvr_config_list dvrconfigs; struct dvr_entry_list dvrentries; +static dvr_config_t *dvrdefaultconfig = NULL; #if ENABLE_DBUS_1 static gtimer_t dvr_dbus_timer; @@ -417,7 +418,7 @@ dvr_entry_create(const char *uuid, htsmsg_t *conf) } de->de_mc = -1; - de->de_config = dvr_config_find_by_name_default(""); + de->de_config = dvr_config_find_by_name_default(NULL); if (de->de_config) LIST_INSERT_HEAD(&de->de_config->dvr_entries, de, de_config_link); @@ -709,7 +710,7 @@ dvr_entry_destroy_by_config(dvr_config_t *cfg, int delconf) while ((de = LIST_FIRST(&cfg->dvr_entries)) != NULL) { LIST_REMOVE(de, de_config_link); if (def == NULL && delconf) - def = dvr_config_find_by_name_default(""); + def = dvr_config_find_by_name_default(NULL); de->de_config = def; if (def) LIST_INSERT_HEAD(&def->dvr_entries, de, de_config_link); @@ -2000,20 +2001,24 @@ dvr_config_find_by_name_default(const char *name) { dvr_config_t *cfg; - cfg = dvr_config_find_by_name(name); + if (dvrdefaultconfig && (name == NULL || *name == '\0')) + return dvrdefaultconfig; + + cfg = name ? dvr_config_find_by_name(name) : NULL; if (cfg == NULL) { - if (name && name[0]) - tvhlog(LOG_WARNING, "dvr", "Configuration '%s' not found", name); - cfg = dvr_config_find_by_name(""); + if (name && *name) + tvhlog(LOG_WARNING, "dvr", "Configuration '%s' not found, using default", name); + cfg = dvrdefaultconfig; } else if (!cfg->dvr_enabled) { - tvhlog(LOG_WARNING, "dvr", "Configuration '%s' not enabled", name); - cfg = dvr_config_find_by_name(""); + tvhlog(LOG_WARNING, "dvr", "Configuration '%s' not enabled, using default", name); + cfg = dvrdefaultconfig; } if (cfg == NULL) { cfg = dvr_config_create("", NULL, NULL); dvr_config_save(cfg); + dvrdefaultconfig = cfg; } return cfg; @@ -2762,7 +2767,7 @@ dvr_config_init(void) /* Create the default entry */ - cfg = dvr_config_find_by_name_default(""); + cfg = dvr_config_find_by_name_default(NULL); assert(cfg); LIST_FOREACH(cfg, &dvrconfigs, config_link) { diff --git a/src/dvr/dvr_timerec.c b/src/dvr/dvr_timerec.c index 065eb3a7..b88600ab 100644 --- a/src/dvr/dvr_timerec.c +++ b/src/dvr/dvr_timerec.c @@ -187,7 +187,7 @@ dvr_timerec_create(const char *uuid, htsmsg_t *conf) dte->dte_pri = DVR_PRIO_NORMAL; dte->dte_start = -1; dte->dte_stop = -1; - dte->dte_config = dvr_config_find_by_name_default(""); + dte->dte_config = dvr_config_find_by_name_default(NULL); LIST_INSERT_HEAD(&dte->dte_config->dvr_timerec_entries, dte, dte_config_link); TAILQ_INSERT_TAIL(&timerec_entries, dte, dte_link); @@ -638,7 +638,7 @@ timerec_destroy_by_config(dvr_config_t *kcfg, int delconf) while((dte = LIST_FIRST(&kcfg->dvr_timerec_entries)) != NULL) { LIST_REMOVE(dte, dte_config_link); if (cfg == NULL && delconf) - cfg = dvr_config_find_by_name_default(""); + cfg = dvr_config_find_by_name_default(NULL); if (cfg) LIST_INSERT_HEAD(&cfg->dvr_timerec_entries, dte, dte_config_link); dte->dte_config = cfg; diff --git a/src/htsp_server.c b/src/htsp_server.c index 49942faf..d37e1dc2 100644 --- a/src/htsp_server.c +++ b/src/htsp_server.c @@ -914,7 +914,7 @@ htsp_method_getDiskSpace(htsp_connection_t *htsp, htsmsg_t *in) { htsmsg_t *out; struct statvfs diskdata; - dvr_config_t *cfg = dvr_config_find_by_name_default(""); + dvr_config_t *cfg = dvr_config_find_by_name_default(NULL); if(statvfs(cfg->dvr_storage,&diskdata) == -1) return htsp_error("Unable to stat path"); diff --git a/src/webui/webui.c b/src/webui/webui.c index 743076b2..2d631ea7 100644 --- a/src/webui/webui.c +++ b/src/webui/webui.c @@ -403,7 +403,7 @@ http_channel_playlist(http_connection_t *hc, channel_t *channel) mc = muxer_container_txt2type(http_arg_get(&hc->hc_req_args, "mux")); if(mc == MC_UNKNOWN) - mc = dvr_config_find_by_name_default("")->dvr_mc; + mc = dvr_config_find_by_name_default(NULL)->dvr_mc; hq = &hc->hc_reply; host = http_arg_get(&hc->hc_args, "Host"); @@ -460,7 +460,7 @@ http_tag_playlist(http_connection_t *hc, channel_tag_t *tag) mc = muxer_container_txt2type(http_arg_get(&hc->hc_req_args, "mux")); if(mc == MC_UNKNOWN) - mc = dvr_config_find_by_name_default("")->dvr_mc; + mc = dvr_config_find_by_name_default(NULL)->dvr_mc; htsbuf_qprintf(hq, "#EXTM3U\n"); LIST_FOREACH(ctm, &tag->ct_ctms, ctm_tag_link) { @@ -496,7 +496,7 @@ http_tag_list_playlist(http_connection_t *hc) mc = muxer_container_txt2type(http_arg_get(&hc->hc_req_args, "mux")); if(mc == MC_UNKNOWN) - mc = dvr_config_find_by_name_default("")->dvr_mc; + mc = dvr_config_find_by_name_default(NULL)->dvr_mc; htsbuf_qprintf(hq, "#EXTM3U\n"); TAILQ_FOREACH(ct, &channel_tags, ct_link) { @@ -545,7 +545,7 @@ http_channel_list_playlist(http_connection_t *hc) mc = muxer_container_txt2type(http_arg_get(&hc->hc_req_args, "mux")); if(mc == MC_UNKNOWN) - mc = dvr_config_find_by_name_default("")->dvr_mc; + mc = dvr_config_find_by_name_default(NULL)->dvr_mc; CHANNEL_FOREACH(ch) count++; @@ -768,7 +768,7 @@ http_stream_service(http_connection_t *hc, service_t *service, int weight) if(http_access_verify(hc, ACCESS_ADVANCED_STREAMING)) return HTTP_STATUS_UNAUTHORIZED; - cfg = dvr_config_find_by_name_default(""); + cfg = dvr_config_find_by_name_default(NULL); /* Build muxer config - this takes the defaults from the default dvr config, which is a hack */ mc = muxer_container_txt2type(http_arg_get(&hc->hc_req_args, "mux")); @@ -886,7 +886,7 @@ http_stream_channel(http_connection_t *hc, channel_t *ch, int weight) if (http_access_verify_channel(hc, ACCESS_STREAMING, ch, 1)) return HTTP_STATUS_UNAUTHORIZED; - cfg = dvr_config_find_by_name_default(""); + cfg = dvr_config_find_by_name_default(NULL); /* Build muxer config - this takes the defaults from the default dvr config, which is a hack */ mc = muxer_container_txt2type(http_arg_get(&hc->hc_req_args, "mux"));