[asterisk-commits] kharwell: trunk r408645 - in /trunk: ./ main/channel.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Feb 21 09:46:22 CST 2014
Author: kharwell
Date: Fri Feb 21 09:46:20 2014
New Revision: 408645
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=408645
Log:
channel.c: MOH is not working for transferee after attended transfer
Updated the code to check to see if MOH is playing on the transferor and if
so then start it on the channel that replaces it during a masquerade.
Example scenario of the problem:
Alice calls Bob and then Bob begins the attended transfer process into a queue.
Upon going on hold Alice hears music and so does Bob once he is in the queue.
Bob then transfers Alice into the queue and then music for Alice stops even
though she should be hearing it since has now replaced Bob in the queue.
The problem that was occurring is that once the channel was masqueraded the app
(queues, confbridge, etc...) had no way of knowing that the channel had just
been swapped out thus it did not start music for the present channel.
Credit to Olle Johansson for pointing me in the right direction on this issue.
(closes issue ASTERISK-19499)
Reported by: Timo Teräs
Review: https://reviewboard.asterisk.org/r/3226/
........
Merged revisions 408642 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 408643 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 408644 from http://svn.asterisk.org/svn/asterisk/branches/12
Modified:
trunk/ (props changed)
trunk/main/channel.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-12-merged' - no diff available.
Modified: trunk/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/channel.c?view=diff&rev=408645&r1=408644&r2=408645
==============================================================================
--- trunk/main/channel.c (original)
+++ trunk/main/channel.c Fri Feb 21 09:46:20 2014
@@ -6406,6 +6406,7 @@
unsigned int clone_disablestatecache;
int visible_indication;
int clone_hold_state;
+ int moh_is_playing;
struct ast_frame *current;
const struct ast_channel_tech *t;
void *t_pvt;
@@ -6452,6 +6453,8 @@
ao2_unlink(channels, original);
ao2_unlink(channels, clonechan);
+ moh_is_playing = ast_test_flag(ast_channel_flags(original), AST_FLAG_MOH);
+
/*
* Stop any visible indication on the original channel so we can
* transfer it to the clonechan taking the original's place.
@@ -6751,6 +6754,12 @@
} else {
ast_indicate(original, visible_indication);
}
+ }
+
+ /* if moh is playing on the original channel then it needs to be
+ maintained on the channel that is replacing it. */
+ if (moh_is_playing) {
+ ast_moh_start(original, NULL, NULL);
}
ast_channel_lock(original);
More information about the asterisk-commits
mailing list