summaryrefslogtreecommitdiff
path: root/res/res_musiconhold.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2009-02-09 14:49:24 +0000
committerJoshua Colp <jcolp@digium.com>2009-02-09 14:49:24 +0000
commit23760c47d3ad3a63ceb4b95dff9f5b799ffd33c1 (patch)
tree2ad62d2e915d840669c14dffa12e6fd0491536cf /res/res_musiconhold.c
parente77b3cea6b4549cb6aa19003c02915dbcc1b54ef (diff)
Merged revisions 174218 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r174218 | file | 2009-02-09 10:48:21 -0400 (Mon, 09 Feb 2009) | 4 lines Don't overwrite our pointer to the music class when music on hold stops. We will use this if it starts again to see if we can resume the music where it left off. (closes issue #14407) Reported by: mostyn ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@174219 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_musiconhold.c')
-rw-r--r--res/res_musiconhold.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index c53bf29c1..0bf69e6c5 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -214,7 +214,7 @@ static void moh_files_release(struct ast_channel *chan, void *data)
state->save_pos = state->pos;
- state->class = mohclass_unref(state->class);
+ mohclass_unref(state->class);
}
static int ast_moh_files_next(struct ast_channel *chan)
@@ -315,8 +315,6 @@ static void *moh_files_alloc(struct ast_channel *chan, void *params)
if (!chan->music_state && (state = ast_calloc(1, sizeof(*state)))) {
chan->music_state = state;
- state->class = mohclass_ref(class);
- state->save_pos = -1;
} else {
state = chan->music_state;
}
@@ -326,17 +324,13 @@ static void *moh_files_alloc(struct ast_channel *chan, void *params)
}
if (state->class != class) {
- /* (re-)initialize */
- if (state->class) {
- state->class = mohclass_unref(state->class);
- }
memset(state, 0, sizeof(*state));
- state->class = mohclass_ref(class);
- if (ast_test_flag(state->class, MOH_RANDOMIZE) && class->total_files) {
+ if (ast_test_flag(class, MOH_RANDOMIZE) && class->total_files) {
state->pos = ast_random() % class->total_files;
}
}
+ state->class = mohclass_ref(class);
state->origwfmt = chan->writeformat;
ast_verb(3, "Started music on hold, class '%s', on %s\n", class->name, chan->name);