rendered paste bodyIndex: res/res_musiconhold.c===================================================================--- res/res_musiconhold.c (revision 73759)+++ res/res_musiconhold.c (working copy)@@ -914,6 +914,19 @@ } }+static struct mohclass *moh_getclass(const char *class)+{+ struct mohclass *mohclass;+ if (!ast_strlen_zero(class)) {+ if (!(mohclass = moh_getbyname(class))) {+ ast_log(LOG_WARNING, "No Class: %s\n", class);+ return NULL;+ } else+ return mohclass;+ } else+ return NULL;+}+ static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, const char *interpclass) { struct mohclass *mohclass;@@ -930,21 +943,19 @@ * option. * 4) The default class. */- if (!ast_strlen_zero(chan->musicclass))+ AST_LIST_LOCK(&mohclasses);+ if (mohclass = moh_getclass(chan->musicclass)) class = chan->musicclass;- else if (!ast_strlen_zero(mclass))+ else if (mohclass = moh_getclass(mclass)) class = mclass;- else if (!ast_strlen_zero(interpclass))+ else if (mohclass = moh_getclass(interpclass)) class = interpclass;- else- class = "default";-- AST_LIST_LOCK(&mohclasses);- mohclass = get_mohbyname(class);+ else if (mohclass = moh_getclass("default"))+ class = "default"; AST_LIST_UNLOCK(&mohclasses); if (!mohclass) {- ast_log(LOG_WARNING, "No class: %s\n", class);+ ast_log(LOG_WARNING, "Could not find acceptable Music on Hold class, ending Music on Hold\n"); return -1; }