aboutsummaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2009-02-09 14:48:21 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2009-02-09 14:48:21 +0000
commiteb56ebd34f384913011896b5c1ae30cbb7ab6815 (patch)
tree0c38283920255914db7d9a88a7a2de56499fc302 /res
parent10537c294c1ce85ac580e836d2294bb652e184d5 (diff)
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: http://svn.digium.com/svn/asterisk/branches/1.4@174218 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-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 a67999d65..9a970f7f2 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -202,7 +202,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);
}
@@ -307,8 +307,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;
}
@@ -318,17 +316,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;
if (option_verbose > 2) {