diff options
author | Tilghman Lesher <tilghman@meg.abyt.es> | 2007-10-18 07:12:18 +0000 |
---|---|---|
committer | Tilghman Lesher <tilghman@meg.abyt.es> | 2007-10-18 07:12:18 +0000 |
commit | 7e23779b01c55101751746ac6a899cf74221d357 (patch) | |
tree | eef4efe74fb6698d439e1257bf94acc4b2ae0576 /res/res_musiconhold.c | |
parent | ac4d66cc738ce45c90926066bd7f3a21f8ea3a60 (diff) |
On reload, re-read the files in the specified moh directory (closes issue #10536)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86277 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_musiconhold.c')
-rw-r--r-- | res/res_musiconhold.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index 4c4f21724..49c0d31ac 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -887,6 +887,23 @@ static int moh_scan_files(struct mohclass *class) { return class->total_files; } +static int moh_diff(struct mohclass *old, struct mohclass *new) +{ + if (!old || !new) + return -1; + + if (strcmp(old->dir, new->dir)) + return -1; + else if (strcmp(old->mode, new->mode)) + return -1; + else if (strcmp(old->args, new->args)) + return -1; + else if (old->flags != new->flags) + return -1; + + return 0; +} + static int moh_register(struct mohclass *moh, int reload) { #ifdef HAVE_ZAPTEL @@ -895,7 +912,7 @@ static int moh_register(struct mohclass *moh, int reload) struct mohclass *mohclass = NULL; AST_RWLIST_WRLOCK(&mohclasses); - if ((mohclass = get_mohbyname(moh->name, 0))) { + if ((mohclass = get_mohbyname(moh->name, 0)) && !moh_diff(mohclass, moh)) { mohclass->delete = 0; if (reload) { ast_debug(1, "Music on Hold class '%s' left alone from initial load.\n", moh->name); |