[Asterisk-cvs] asterisk/res res_agi.c, 1.10, 1.11 res_features.c, 1.16, 1.17

markster at lists.digium.com markster at lists.digium.com
Fri Oct 1 20:56:26 CDT 2004


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

Modified Files:
	res_agi.c res_features.c 
Log Message:
Huge callerid rework (might break H.323, others)


Index: res_agi.c
===================================================================
RCS file: /usr/cvsroot/asterisk/res/res_agi.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- res_agi.c	29 Sep 2004 03:32:58 -0000	1.10
+++ res_agi.c	2 Oct 2004 00:58:31 -0000	1.11
@@ -23,6 +23,7 @@
 #include <asterisk/pbx.h>
 #include <asterisk/module.h>
 #include <asterisk/astdb.h>
+#include <asterisk/callerid.h>
 #include <math.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -296,9 +297,10 @@
 	fdprintf(fd, "agi_uniqueid: %s\n", chan->uniqueid);
 
 	/* ANI/DNIS */
-	fdprintf(fd, "agi_callerid: %s\n", chan->callerid ? chan->callerid : "unknown");
-	fdprintf(fd, "agi_dnid: %s\n", chan->dnid ? chan->dnid : "unknown");
-	fdprintf(fd, "agi_rdnis: %s\n", chan->rdnis ? chan->rdnis : "unknown");
+	fdprintf(fd, "agi_callerid: %s\n", chan->cid.cid_num ? chan->cid.cid_num : "unknown");
+	fdprintf(fd, "agi_calleridname: %s\n", chan->cid.cid_name ? chan->cid.cid_name : "unknown");
+	fdprintf(fd, "agi_dnid: %s\n", chan->cid.cid_dnid ? chan->cid.cid_dnid : "unknown");
+	fdprintf(fd, "agi_rdnis: %s\n", chan->cid.cid_rdnis ? chan->cid.cid_rdnis : "unknown");
 
 	/* Context information */
 	fdprintf(fd, "agi_context: %s\n", chan->context);
@@ -837,8 +839,19 @@
 
 static int handle_setcallerid(struct ast_channel *chan, AGI *agi, int argc, char **argv)
 {
-	if (argv[2])
-		ast_set_callerid(chan, argv[2], 0);
+	char tmp[256]="";
+	char *l = NULL, *n = NULL;
+	if (argv[2]) {
+		strncpy(tmp, argv[2], sizeof(tmp) - 1);
+		ast_callerid_parse(tmp, &n, &l);
+		if (l)
+			ast_shrink_phone_number(l);
+		else
+			l = "";
+		if (!n)
+			n = "";
+		ast_set_callerid(chan, l, n, NULL);
+	}
 
 	fdprintf(agi->fd, "200 result=1\n");
 	return RESULT_SUCCESS;

Index: res_features.c
===================================================================
RCS file: /usr/cvsroot/asterisk/res/res_features.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- res_features.c	26 Sep 2004 20:47:01 -0000	1.16
+++ res_features.c	2 Oct 2004 00:58:31 -0000	1.17
@@ -210,9 +210,11 @@
                                 "From: %s\r\n"
                                 "Timeout: %ld\r\n"
                                 "CallerID: %s\r\n"
+                                "CallerIDName: %s\r\n\r\n"
                                 ,pu->parkingnum, pu->chan->name, peer->name
                                 ,(long)pu->start.tv_sec + (long)(pu->parkingtime/1000) - (long)time(NULL)
-                                ,(pu->chan->callerid ? pu->chan->callerid : "")
+                                ,(pu->chan->cid.cid_num ? pu->chan->cid.cid_num : "")
+                                ,(pu->chan->cid.cid_name ? pu->chan->cid.cid_name : "")
                                 );
 
 			if (peer) {
@@ -450,7 +452,7 @@
 						break;
 					*(ptr++) = res;
 					if (!ast_matchmore_extension(transferer, transferer_real_context
-								, newext, 1, transferer->callerid)) {
+								, newext, 1, transferer->cid.cid_num)) {
 						break;
 					}
 				}
@@ -479,7 +481,7 @@
 						ast_log(LOG_WARNING, "Unable to park call %s\n", transferee->name);
 					}
 					/* XXX Maybe we should have another message here instead of invalid extension XXX */
-				} else if (ast_exists_extension(transferee, transferer_real_context, newext, 1, transferer->callerid)) {
+				} else if (ast_exists_extension(transferee, transferer_real_context, newext, 1, transferer->cid.cid_num)) {
 					ast_moh_stop(transferee);
 					res=ast_autoservice_stop(transferee);
 					if (!transferee->pbx) {
@@ -842,11 +844,13 @@
 			"Channel: %s\r\n"
 			"Timeout: %ld\r\n"
 			"CallerID: %s\r\n"
+			"CallerIDName: %s\r\n"
 			"%s"
 			"\r\n"
                         ,cur->parkingnum, cur->chan->name
                         ,(long)cur->start.tv_sec + (long)(cur->parkingtime/1000) - (long)time(NULL)
-			,(cur->chan->callerid ? cur->chan->callerid : "")
+			,(cur->chan->cid.cid_num ? cur->chan->cid.cid_num : "")
+			,(cur->chan->cid.cid_name ? cur->chan->cid.cid_name : "")
 			,idText);
 			ast_mutex_unlock(&s->lock);
 




More information about the svn-commits mailing list