[asterisk-commits] oej: branch group/rana-moh-sip-transfer-1.8 r389725 - in /team/group/rana-moh...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri May 24 09:39:33 CDT 2013


Author: oej
Date: Fri May 24 09:39:29 2013
New Revision: 389725

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=389725
Log:
A tiny commit for a huge problem

Maybe this fixes blind transfers. Not blond or brunette transfers though.

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
    team/group/rana-moh-sip-transfer-1.8/channels/sip/include/sip.h

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=389725&r1=389724&r2=389725
==============================================================================
--- 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 May 24 09:39:29 2013
@@ -22,3 +22,24 @@
 C doesn't get music on hold - just silence.
 
 The moh status is not following the transfer.
+
+---
+BLIND Transfer
+
+chan1 ->transferer to asterisk
+chan2 ->asterisk to transferee
+target -> new channel
+
+Todo: Copy MOH status from chan1 to target.
+Or after target is set up, check hold status on chan2 and take action on that
+-------
+Attended transfer
+
+- Chan1 -> transferer to asterisk
+- Chan2 -> asterisk to transferee
+- target.chan1 Target channel
+- target.chan2 channel bridged to target
+- What's the name of the channel between transferer and asterisk bridged to target???
+We're bridging chan2 to target.chan1
+
+

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=389725&r1=389724&r2=389725
==============================================================================
--- 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 May 24 09:39:29 2013
@@ -7356,10 +7356,12 @@
 		res = -1;
 		break;
 	case AST_CONTROL_HOLD:
+		ast_set_flag(&p->flags[2], SIP_PAGE3_ONHOLD_BY_BRIDGEPEER);
 		ast_rtp_instance_update_source(p->rtp);
 		ast_moh_start(ast, data, p->mohinterpret);
 		break;
 	case AST_CONTROL_UNHOLD:
+		ast_clear_flag(&p->flags[2], SIP_PAGE3_ONHOLD_BY_BRIDGEPEER);
 		ast_rtp_instance_update_source(p->rtp);
 		ast_moh_stop(ast);
 		break;
@@ -24110,6 +24112,7 @@
 	int localtransfer = 0;
 	int attendedtransfer = 0;
 	int res = 0;
+	int currentlyonhold = ast_test_flag(&p->flags[2], SIP_PAGE3_ONHOLD_BY_BRIDGEPEER);;
 
 	if (req->debug) {
 		ast_verbose("Call %s got a SIP call transfer from %s: (REFER)!\n",
@@ -24294,6 +24297,7 @@
 		}
 		/* Fallthrough if we can't find the call leg internally */
 	}
+
 
 	/* Copy data we can not safely access after letting the pvt lock go. */
 	refer_to = ast_strdupa(p->refer->refer_to);
@@ -24423,6 +24427,10 @@
 	sip_pvt_unlock(p);
 	ast_indicate(current.chan2, AST_CONTROL_UNHOLD);
 	res = ast_async_goto(current.chan2, refer_to_context, refer_to, 1);
+	if (currentlyonhold) {
+		/* If this call was put on hold, let's put the new call on hold too */
+		ast_indicate(current.chan2, AST_CONTROL_HOLD);
+	}
 
 	if (!res) {
 		ast_manager_event_multichan(EVENT_FLAG_CALL, "Transfer", 2, chans,

Modified: team/group/rana-moh-sip-transfer-1.8/channels/sip/include/sip.h
URL: http://svnview.digium.com/svn/asterisk/team/group/rana-moh-sip-transfer-1.8/channels/sip/include/sip.h?view=diff&rev=389725&r1=389724&r2=389725
==============================================================================
--- team/group/rana-moh-sip-transfer-1.8/channels/sip/include/sip.h (original)
+++ team/group/rana-moh-sip-transfer-1.8/channels/sip/include/sip.h Fri May 24 09:39:29 2013
@@ -359,6 +359,7 @@
 
 #define SIP_PAGE3_SNOM_AOC               (1 << 0)  /*!< DPG: Allow snom aoc messages */
 #define SIP_PAGE3_DIRECT_MEDIA_OUTGOING  (1 << 1)  /*!< DP: Only send direct media reinvites on outgoing calls */
+#define SIP_PAGE3_ONHOLD_BY_BRIDGEPEER  (1 << 17)  /*!< D: We're put on hold and play music */
 
 #define SIP_PAGE3_FLAGS_TO_COPY \
 	(SIP_PAGE3_SNOM_AOC | SIP_PAGE3_DIRECT_MEDIA_OUTGOING)




More information about the asterisk-commits mailing list