diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index 4e5056358fba5fe34b2cd6566adfa558d9b86ac7..f124d58f23a41d04d87f9c712b9e786b7603eeab 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -1379,6 +1379,18 @@ static struct mohclass *_moh_class_malloc(const char *file, int line, const char return class; } +static struct ast_variable *load_realtime_musiconhold(const char *name) +{ + struct ast_variable *var = ast_load_realtime("musiconhold", "name", name, SENTINEL); + if (!var) { + ast_log(LOG_WARNING, + "Music on Hold class '%s' not found in memory/database. " + "Verify your configuration.\n", + name); + } + return var; +} + static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, const char *interpclass) { struct mohclass *mohclass = NULL; @@ -1387,6 +1399,7 @@ static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, con int res = 0; int i; int realtime_possible = ast_check_realtime("musiconhold"); + int warn_if_not_in_memory = !realtime_possible; const char *classes[] = {NULL, NULL, interpclass, "default"}; if (ast_test_flag(global_flags, MOH_PREFERCHANNELCLASS)) { @@ -1414,9 +1427,9 @@ static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, con for (i = 0; i < ARRAY_LEN(classes); ++i) { if (!ast_strlen_zero(classes[i])) { - mohclass = get_mohbyname(classes[i], 1, 0); + mohclass = get_mohbyname(classes[i], warn_if_not_in_memory, 0); if (!mohclass && realtime_possible) { - var = ast_load_realtime("musiconhold", "name", classes[i], SENTINEL); + var = load_realtime_musiconhold(classes[i]); } if (mohclass || var) { break;