[Asterisk-cvs] asterisk/res res_osp.c,1.9,1.10

markster at lists.digium.com markster at lists.digium.com
Wed Jan 5 09:10:13 CST 2005


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

Modified Files:
	res_osp.c 
Log Message:
Merge OSP updates from matt nicholson (with changes)


Index: res_osp.c
===================================================================
RCS file: /usr/cvsroot/asterisk/res/res_osp.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- res_osp.c	22 Oct 2004 15:28:32 -0000	1.9
+++ res_osp.c	5 Jan 2005 15:15:12 -0000	1.10
@@ -496,6 +496,7 @@
 	char source[OSP_MAX] = ""; /* Same length as osp->source */
 	char uniqueid[32] = "";
 	char callednum[2048]="";
+	char callingnum[2048]="";
 	char destination[2048]="";
 	char token[2000];
 	char tmp[256]="", *l, *n;
@@ -559,9 +560,9 @@
 					tokenlen = sizeof(token);
 					result->numresults = counts - 1;
 					if (!OSPPTransactionGetFirstDestination(result->handle, 0, NULL, NULL, &timelimit, &callidlen, uniqueid, 
-						sizeof(callednum), callednum, sizeof(destination), destination, 0, NULL, &tokenlen, token)) {
-						ast_log(LOG_DEBUG, "Got destination '%s' and '%s' for '%s' (provider '%s')\n",
-							destination, callednum, extension, provider);
+						sizeof(callednum), callednum, sizeof(callingnum), callingnum, sizeof(destination), destination, 0, NULL, &tokenlen, token)) {
+						ast_log(LOG_DEBUG, "Got destination '%s' and called: '%s' calling: '%s' for '%s' (provider '%s')\n",
+							destination, callednum, callingnum, extension, provider);
 						do {
 							ast_base64encode(result->token, token, tokenlen, sizeof(result->token) - 1);
 							if ((strlen(destination) > 2) && !OSPPTransactionGetDestProtocol(result->handle, &prot)) {
@@ -577,6 +578,10 @@
 									strncpy(result->tech, "SIP", sizeof(result->tech) - 1);
 									snprintf(result->dest, sizeof(result->dest), "%s@%s", callednum, destination + 1);
 									break;
+								case OSPE_DEST_PROT_IAX:
+									strncpy(result->tech, "IAX", sizeof(result->tech) - 1);
+									snprintf(result->dest, sizeof(result->dest), "%s@%s", callednum, destination + 1);
+									break;
 								default:
 									ast_log(LOG_DEBUG, "Unknown destination protocol '%d', skipping...\n", prot);
 									res = 0;
@@ -584,7 +589,7 @@
 								if (!res && result->numresults) {
 									result->numresults--;
 									if (OSPPTransactionGetNextDestination(result->handle, OSPC_FAIL_INCOMPATIBLE_DEST, 0, NULL, NULL, &timelimit, &callidlen, uniqueid, 
-											sizeof(callednum), callednum, sizeof(destination), destination, 0, NULL, &tokenlen, token)) {
+											sizeof(callednum), callednum, sizeof(callingnum), callingnum, sizeof(destination), destination, 0, NULL, &tokenlen, token)) {
 											break;
 									}
 								}
@@ -624,6 +629,7 @@
 	unsigned int callidlen;
 	char uniqueid[32] = "";
 	char callednum[2048]="";
+	char callingnum[2048]="";
 	char destination[2048]="";
 	char token[2000];
 	OSPE_DEST_PROT prot;
@@ -640,7 +646,7 @@
 			while(!res && result->numresults) {
 				result->numresults--;
 				if (!OSPPTransactionGetNextDestination(result->handle, OSPC_FAIL_INCOMPATIBLE_DEST, 0, NULL, NULL, &timelimit, &callidlen, uniqueid, 
-									sizeof(callednum), callednum, sizeof(destination), destination, 0, NULL, &tokenlen, token)) {
+									sizeof(callednum), callednum, sizeof(callingnum), callingnum, sizeof(destination), destination, 0, NULL, &tokenlen, token)) {
 					ast_base64encode(result->token, token, tokenlen, sizeof(result->token) - 1);
 					if ((strlen(destination) > 2) && !OSPPTransactionGetDestProtocol(result->handle, &prot)) {
 						res = 1;
@@ -655,6 +661,10 @@
 							strncpy(result->tech, "SIP", sizeof(result->tech) - 1);
 							snprintf(result->dest, sizeof(result->dest), "%s@%s", callednum, destination + 1);
 							break;
+						case OSPE_DEST_PROT_IAX:
+							strncpy(result->tech, "IAX", sizeof(result->tech) - 1);
+							snprintf(result->dest, sizeof(result->dest), "%s@%s", callednum, destination + 1);
+							break;
 						default:
 							ast_log(LOG_DEBUG, "Unknown destination protocol '%d', skipping...\n", prot);
 							res = 0;
@@ -700,10 +710,21 @@
 	unsigned int dummy = 0;
 	int res = -1;
 	enum OSPEFAILREASON reason;
+
+	time_t endTime = 0;
+	time_t alertTime = 0;
+	time_t connectTime = 0;
+	unsigned isPddInfoPresent = 0;
+	unsigned pdd = 0;
+	unsigned releaseSource = 0;
+	unsigned char *confId = "";
+	
 	reason = cause2reason(cause);
 	if (OSPPTransactionRecordFailure(handle, reason))
 		ast_log(LOG_WARNING, "Failed to record call termination for handle %d\n", handle);
-	else if (OSPPTransactionReportUsage(handle, duration, start, 0, 0, 0, 0, &dummy, NULL))
+	else if (OSPPTransactionReportUsage(handle, duration, start,
+			       endTime,alertTime,connectTime,isPddInfoPresent,pdd,releaseSource,confId,
+		       	       0, 0, 0, 0, &dummy, NULL))
 		ast_log(LOG_WARNING, "Failed to report duration for handle %d\n", handle);
 	else {
 		ast_log(LOG_DEBUG, "Completed recording handle %d\n", handle);




More information about the svn-commits mailing list