[asterisk-commits] oej: branch group/rana-moh-sip-transfer-1.8 r393118 - in /team/group/rana-moh...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Jun 28 03:57:32 CDT 2013
Author: oej
Date: Fri Jun 28 03:57:28 2013
New Revision: 393118
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=393118
Log:
Adding functionality. Yes sir.
Modified:
team/group/rana-moh-sip-transfer-1.8/README.rana-moh-sip-transfer
team/group/rana-moh-sip-transfer-1.8/channels/chan_sip.c
Modified: team/group/rana-moh-sip-transfer-1.8/README.rana-moh-sip-transfer
URL: http://svnview.digium.com/svn/asterisk/team/group/rana-moh-sip-transfer-1.8/README.rana-moh-sip-transfer?view=diff&rev=393118&r1=393117&r2=393118
==============================================================================
--- team/group/rana-moh-sip-transfer-1.8/README.rana-moh-sip-transfer (original)
+++ team/group/rana-moh-sip-transfer-1.8/README.rana-moh-sip-transfer Fri Jun 28 03:57:28 2013
@@ -32,7 +32,7 @@
========
1. Blind transfers in SIP - works ok
2. Attended transfers in SIP - works ok
-3. Transfers to a queue
+3. Transfers to a queue - doesn't work
---
BLIND Transfer
@@ -71,3 +71,18 @@
- chan_mgcp:
- chan_?
- chan_local No changes needed
+
+Transfer to a queue
+===================
+
+When doing attended transfer to a queue we have
+
+A calls or answers B
+A puts B on hold, B gets music
+A calls the queue - no bridge, music provided by app_queue
+A transfers B to queue
+
+B now doesn't get any music
+
+As this is not a hold case we need to find a way to restart MOH on a channel
+with the previous settings.
Modified: team/group/rana-moh-sip-transfer-1.8/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/rana-moh-sip-transfer-1.8/channels/chan_sip.c?view=diff&rev=393118&r1=393117&r2=393118
==============================================================================
--- team/group/rana-moh-sip-transfer-1.8/channels/chan_sip.c (original)
+++ team/group/rana-moh-sip-transfer-1.8/channels/chan_sip.c Fri Jun 28 03:57:28 2013
@@ -23858,6 +23858,7 @@
struct ast_party_connected_line connected_to_target;
char transferer_linkedid[32];
struct ast_channel *chans[2];
+ int target_chan1_mohstate = FALSE;
/* Check if the call ID of the replaces header does exist locally */
if (!(targetcall_pvt = get_sip_pvt_byid_locked(transferer->refer->replaces_callid, transferer->refer->replaces_callid_totag,
@@ -23897,6 +23898,11 @@
target.chan2 = ast_bridged_channel(targetcall_pvt->owner); /* Asterisk to target */
if (target.chan2) {
ast_channel_ref(target.chan2);
+ } else {
+ /* Target chan1 is running a one-legged call, maybe queue or IVR */
+ /* If this channel is serviced by music, we need to make sure that it
+ continues */
+ target_chan1_mohstate = ast_test_flag(target.chan1, AST_FLAG_MOH);
}
if (!target.chan2 || !(target.chan2->_state == AST_STATE_UP || target.chan2->_state == AST_STATE_RINGING) ) {
@@ -23908,6 +23914,7 @@
else
ast_debug(4, "SIP attended transfer: Attempting transfer in ringing state\n");
}
+
/* Transfer */
if (sipdebug) {
@@ -24002,6 +24009,10 @@
if (current->chan2 && current->chan2->_state == AST_STATE_RING) {
ast_indicate(target.chan1, AST_CONTROL_RINGING);
+ }
+ if (target_chan1_mohstate) {
+ ast_debug(4, "====> Turning on music on hold again. Trying to at least \n");
+ ast_moh_start(target.chan1, NULL, NULL);
}
if (target.chan2) {
More information about the asterisk-commits
mailing list