@ -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 " ) ;
}
}