mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-22 20:56:39 +00:00
Merge "musiconhold: Only warn if music class is not found in memory and database." into 13
This commit is contained in:
@@ -1349,6 +1349,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;
|
||||
@@ -1356,6 +1368,7 @@ static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, con
|
||||
struct ast_variable *var = NULL;
|
||||
int res = 0;
|
||||
int realtime_possible = ast_check_realtime("musiconhold");
|
||||
int warn_if_not_in_memory = !realtime_possible;
|
||||
|
||||
/* The following is the order of preference for which class to use:
|
||||
* 1) The channels explicitly set musicclass, which should *only* be
|
||||
@@ -1369,28 +1382,28 @@ static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, con
|
||||
* 4) The default class.
|
||||
*/
|
||||
if (!ast_strlen_zero(ast_channel_musicclass(chan))) {
|
||||
mohclass = get_mohbyname(ast_channel_musicclass(chan), 1, 0);
|
||||
mohclass = get_mohbyname(ast_channel_musicclass(chan), warn_if_not_in_memory, 0);
|
||||
if (!mohclass && realtime_possible) {
|
||||
var = ast_load_realtime("musiconhold", "name", ast_channel_musicclass(chan), SENTINEL);
|
||||
var = load_realtime_musiconhold(ast_channel_musicclass(chan));
|
||||
}
|
||||
}
|
||||
if (!mohclass && !var && !ast_strlen_zero(mclass)) {
|
||||
mohclass = get_mohbyname(mclass, 1, 0);
|
||||
mohclass = get_mohbyname(mclass, warn_if_not_in_memory, 0);
|
||||
if (!mohclass && realtime_possible) {
|
||||
var = ast_load_realtime("musiconhold", "name", mclass, SENTINEL);
|
||||
var = load_realtime_musiconhold(mclass);
|
||||
}
|
||||
}
|
||||
if (!mohclass && !var && !ast_strlen_zero(interpclass)) {
|
||||
mohclass = get_mohbyname(interpclass, 1, 0);
|
||||
mohclass = get_mohbyname(interpclass, warn_if_not_in_memory, 0);
|
||||
if (!mohclass && realtime_possible) {
|
||||
var = ast_load_realtime("musiconhold", "name", interpclass, SENTINEL);
|
||||
var = load_realtime_musiconhold(interpclass);
|
||||
}
|
||||
}
|
||||
|
||||
if (!mohclass && !var) {
|
||||
mohclass = get_mohbyname("default", 1, 0);
|
||||
mohclass = get_mohbyname("default", warn_if_not_in_memory, 0);
|
||||
if (!mohclass && realtime_possible) {
|
||||
var = ast_load_realtime("musiconhold", "name", "default", SENTINEL);
|
||||
var = load_realtime_musiconhold("default");
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user