[asterisk-commits] twilson: branch 1.6.0 r169487 - in /branches/1.6.0: ./ main/features.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Jan 20 12:58:35 CST 2009


Author: twilson
Date: Tue Jan 20 12:58:34 2009
New Revision: 169487

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=169487
Log:
Merged revisions 169486 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

................
  r169486 | twilson | 2009-01-20 12:48:14 -0600 (Tue, 20 Jan 2009) | 13 lines
  
  Merged revisions 169485 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r169485 | twilson | 2009-01-20 12:40:56 -0600 (Tue, 20 Jan 2009) | 6 lines
    
    Don't play audio to the channel if we've masqueraded
    
    (closes issue #14066)
    Reported by: bluefox
    Tested by: otherwiseguy, bluefox
  ........
................

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/main/features.c

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/main/features.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.6.0/main/features.c?view=diff&rev=169487&r1=169486&r2=169487
==============================================================================
--- branches/1.6.0/main/features.c (original)
+++ branches/1.6.0/main/features.c Tue Jan 20 12:58:34 2009
@@ -375,7 +375,7 @@
 }
 
 /* Park a call */
-static int park_call_full(struct ast_channel *chan, struct ast_channel *peer, int timeout, int *extout, char *orig_chan_name)
+static int park_call_full(struct ast_channel *chan, struct ast_channel *peer, int timeout, int *extout, const char *orig_chan_name)
 {
 	struct parkeduser *pu, *cur;
 	int i, x = -1, parking_range;
@@ -455,7 +455,7 @@
 		*extout = x;
 
 	if (peer) 
-		ast_copy_string(pu->peername, peer->name, sizeof(pu->peername));
+		ast_copy_string(pu->peername, S_OR(orig_chan_name, peer->name), sizeof(pu->peername));
 
 	/* Remember what had been dialed, so that if the parking
 	   expires, we try to come back to the same place */
@@ -523,11 +523,10 @@
 	return park_call_full(chan, peer, timeout, extout, NULL);
 }
 
-static int masq_park_call(struct ast_channel *rchan, struct ast_channel *peer, int timeout, int *extout, int play_announcement)
+static int masq_park_call(struct ast_channel *rchan, struct ast_channel *peer, int timeout, int *extout, int play_announcement, const char *orig_chan_name)
 {
 	struct ast_channel *chan;
 	struct ast_frame *f;
-	char *orig_chan_name = NULL;
 	int park_status;
 
 	/* Make a new, fake channel that we'll use to masquerade in the real one */
@@ -552,7 +551,7 @@
 		peer = chan;
 	}
 
-	if (!play_announcement) {
+	if (!play_announcement || !orig_chan_name) {
 		orig_chan_name = ast_strdupa(chan->name);
 	}
 
@@ -568,12 +567,12 @@
 /* Park call via masquraded channel */
 int ast_masq_park_call(struct ast_channel *rchan, struct ast_channel *peer, int timeout, int *extout)
 {
-	return masq_park_call(rchan, peer, timeout, extout, 0);
-}
-
-static int masq_park_call_announce(struct ast_channel *rchan, struct ast_channel *peer, int timeout, int *extout)
-{
-	return masq_park_call(rchan, peer, timeout, extout, 1);
+	return masq_park_call(rchan, peer, timeout, extout, 0, NULL);
+}
+
+static int masq_park_call_announce(struct ast_channel *rchan, struct ast_channel *peer, int timeout, int *extout, const char *orig_chan_name)
+{
+	return masq_park_call(rchan, peer, timeout, extout, 1, orig_chan_name);
 }
 
 #define FEATURE_RETURN_HANGUP		-1
@@ -639,7 +638,7 @@
 		res = ast_safe_sleep(chan, 1000);
 
 	if (!res) { /* one direction used to call park_call.... */
-		masq_park_call_announce(parkee, parker, 0, NULL);
+		masq_park_call_announce(parkee, parker, 0, NULL, NULL);
 		res = 0; /* PBX should hangup zombie channel */
 	}
 	return res;
@@ -940,7 +939,7 @@
 		res = finishup(transferee);
 		if (res)
 			res = -1;
-		else if (!masq_park_call_announce(transferee, transferer, 0, NULL)) {	/* success */
+		else if (!masq_park_call_announce(transferee, transferer, 0, NULL, NULL)) {	/* success */
 			/* We return non-zero, but tell the PBX not to hang the channel when
 			   the thread dies -- We have to be careful now though.  We are responsible for 
 			   hanging up the channel, else it will never be hung up! */
@@ -2544,6 +2543,7 @@
 /*! \brief Park a call */
 static int park_call_exec(struct ast_channel *chan, void *data)
 {
+ 	char *orig_chan_name = ast_strdupa(chan->name);
 	char orig_exten[AST_MAX_EXTENSION];
 	int orig_priority = chan->priority;
 
@@ -2565,7 +2565,7 @@
 		res = ast_safe_sleep(chan, 1000);
 	/* Park the call */
 	if (!res) {
- 		res = masq_park_call_announce(chan, chan, 0, NULL);
+ 		res = masq_park_call_announce(chan, chan, 0, NULL, orig_chan_name);
 		/* Continue on in the dialplan */
 		if (res == 1) {
 			ast_copy_string(chan->exten, orig_exten, sizeof(chan->exten));




More information about the asterisk-commits mailing list