[Asterisk-cvs] asterisk/apps app_dial.c,1.134,1.135

markster at lists.digium.com markster at lists.digium.com
Wed Feb 2 14:34:16 CST 2005


Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv348/apps

Modified Files:
	app_dial.c 
Log Message:
Add new 'p' flag to Dial for preserve callerid (bug #3490)


Index: app_dial.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_dial.c,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -d -r1.134 -r1.135
--- app_dial.c	1 Feb 2005 01:53:24 -0000	1.134
+++ app_dial.c	2 Feb 2005 20:35:25 -0000	1.135
@@ -71,6 +71,8 @@
 "             making/redirecting the outgoing call. For example, some PSTNs\n"
 "             don't allow callerids from other extensions then the ones\n"
 "             that are assigned to you.\n"
+"      'p' -- Preserve the incoming Caller*ID on the outbound leg of the call (old style\n"
+"             asterisk behavior)\n"
 "      'r' -- indicate ringing to the calling party, pass no audio until answered.\n"
 "      'm[(class)]' -- provide hold music to the calling party until answered (optionally\n"
 "                      with the specified class.\n"
@@ -145,6 +147,7 @@
 #define DIAL_MONITOR_OUT			(1 << 9)
 #define DIAL_GO_ON					(1 << 10)
 #define DIAL_HALT_ON_DTMF 			(1 << 11)
+#define DIAL_PRESERVE_CALLERID		(1 << 12)
 
 struct localuser {
 	struct ast_channel *chan;
@@ -403,7 +406,8 @@
 							numnochan++;
 						} else {
 							/* After calling, set callerid to extension */
-							ast_set_callerid(o->chan, ast_strlen_zero(in->macroexten) ? in->exten : in->macroexten, get_cid_name(cidname, sizeof(cidname), in), NULL);
+							if (!ast_test_flag(peerflags, DIAL_PRESERVE_CALLERID))
+								ast_set_callerid(o->chan, ast_strlen_zero(in->macroexten) ? in->exten : in->macroexten, get_cid_name(cidname, sizeof(cidname), in), NULL);
 						}
 					}
 					/* Hangup the original channel now, in case we needed it */
@@ -890,6 +894,7 @@
 			ast_set2_flag(peerflags, strchr(transfer, 'W'), DIAL_MONITOR_OUT);	
 			ast_set2_flag(peerflags, strchr(transfer, 'd'), DIAL_HALT_ON_DTMF);	
 			ast_set2_flag(peerflags, strchr(transfer, 'g'), DIAL_GO_ON);	
+			ast_set2_flag(peerflags, strchr(transfer, 'p'), DIAL_PRESERVE_CALLERID);	
 		}
 		strncpy(numsubst, number, sizeof(numsubst)-1);
 		/* If we're dialing by extension, look at the extension to know what to dial */
@@ -1013,7 +1018,8 @@
 		} else {
 			if (option_verbose > 2)
 				ast_verbose(VERBOSE_PREFIX_3 "Called %s\n", numsubst);
-			ast_set_callerid(tmp->chan, ast_strlen_zero(chan->macroexten) ? chan->exten : chan->macroexten, get_cid_name(cidname, sizeof(cidname), chan), NULL);
+			if (!ast_test_flag(peerflags, DIAL_PRESERVE_CALLERID))
+				ast_set_callerid(tmp->chan, ast_strlen_zero(chan->macroexten) ? chan->exten : chan->macroexten, get_cid_name(cidname, sizeof(cidname), chan), NULL);
 		}
 		/* Put them in the list of outgoing thingies...  We're ready now. 
 		   XXX If we're forcibly removed, these outgoing calls won't get




More information about the svn-commits mailing list