[svn-commits] seanbright: branch seanbright/cdr-tds-conversion r126113 - /team/seanbright/c...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Jun 27 17:48:45 CDT 2008


Author: seanbright
Date: Fri Jun 27 17:48:44 2008
New Revision: 126113

URL: http://svn.digium.com/view/asterisk?view=rev&rev=126113
Log:
Try to make the locking more granular in the logging function, fix a date
time problem I just introduced, and introduce a small formatting change
that surely violates the coding guidelines.

Modified:
    team/seanbright/cdr-tds-conversion/cdr/cdr_tds.c

Modified: team/seanbright/cdr-tds-conversion/cdr/cdr_tds.c
URL: http://svn.digium.com/view/asterisk/team/seanbright/cdr-tds-conversion/cdr/cdr_tds.c?view=diff&rev=126113&r1=126112&r2=126113
==============================================================================
--- team/seanbright/cdr-tds-conversion/cdr/cdr_tds.c (original)
+++ team/seanbright/cdr-tds-conversion/cdr/cdr_tds.c Fri Jun 27 17:48:44 2008
@@ -110,30 +110,30 @@
 	char start[80], answer[80], end[80];
 	char *accountcode, *src, *dst, *dcontext, *clid, *channel, *dstchannel, *lastapp, *lastdata, *uniqueid;
 	RETCODE erc;
+	int res = -1;
+
+	accountcode = anti_injection(cdr->accountcode, 20);
+	src         = anti_injection(cdr->src, 80);
+	dst         = anti_injection(cdr->dst, 80);
+	dcontext    = anti_injection(cdr->dcontext, 80);
+	clid        = anti_injection(cdr->clid, 80);
+	channel     = anti_injection(cdr->channel, 80);
+	dstchannel  = anti_injection(cdr->dstchannel, 80);
+	lastapp     = anti_injection(cdr->lastapp, 80);
+	lastdata    = anti_injection(cdr->lastdata, 80);
+	uniqueid    = anti_injection(cdr->uniqueid, 32);
+
+	get_date(start, sizeof(start), cdr->start);
+	get_date(answer, sizeof(answer), cdr->answer);
+	get_date(end, sizeof(end), cdr->end);
 
 	ast_mutex_lock(&tds_lock);
-
-	accountcode = anti_injection(cdr->accountcode, 20);
-	src = anti_injection(cdr->src, 80);
-	dst = anti_injection(cdr->dst, 80);
-	dcontext = anti_injection(cdr->dcontext, 80);
-	clid = anti_injection(cdr->clid, 80);
-	channel = anti_injection(cdr->channel, 80);
-	dstchannel = anti_injection(cdr->dstchannel, 80);
-	lastapp = anti_injection(cdr->lastapp, 80);
-	lastdata = anti_injection(cdr->lastdata, 80);
-	uniqueid = anti_injection(cdr->uniqueid, 32);
-
-	get_date(start, 80, cdr->start);
-	get_date(answer, 80, cdr->answer);
-	get_date(end, 80, cdr->end);
 
 	/* Ensure that we are connected */
 	if (!settings->connected) {
 		if (mssql_connect()) {
 			/* Connect failed */
-			ast_mutex_unlock(&tds_lock);
-			return -1;
+			goto done;
 		}
 	}
 
@@ -198,6 +198,29 @@
 		uniqueid
 	);
 
+	if (erc == FAIL) {
+		ast_log(LOG_ERROR, "Failed to build query\n");
+		goto done;
+	}
+
+	erc = dbsqlexec(settings->dbproc);
+
+	if (erc == FAIL) {
+		ast_log(LOG_ERROR, "Failed to send query\n");
+		goto done;
+	}
+
+	/* Consume any results we might get back (this is more of a sanity check than
+	 * anything else, since an INSERT shouldn't return results). */
+	while ((erc = dbresults(settings->dbproc)) != NO_MORE_RESULTS) {
+		while (dbnextrow(settings->dbproc) != NO_MORE_ROWS);
+	}
+
+	res = 0;
+
+done:
+	ast_mutex_unlock(&tds_lock);
+
 	ast_free(accountcode);
 	ast_free(src);
 	ast_free(dst);
@@ -209,28 +232,6 @@
 	ast_free(lastdata);
 	ast_free(uniqueid);
 
-	if (erc == FAIL) {
-		ast_log(LOG_ERROR, "Failed to build query\n");
-		ast_mutex_unlock(&tds_lock);
-		return -1;
-	}
-
-	erc = dbsqlexec(settings->dbproc);
-
-	if (erc == FAIL) {
-		ast_log(LOG_ERROR, "Failed to send query\n");
-		ast_mutex_unlock(&tds_lock);
-		return -1;
-	}
-
-	/* Consume any results we might get back (this is more of a sanity check than
-	 * anything else, since an INSERT shouldn't return results). */
-	while ((erc = dbresults(settings->dbproc)) != NO_MORE_RESULTS) {
-		while (dbnextrow(settings->dbproc) != NO_MORE_ROWS);
-	}
-
-	ast_mutex_unlock(&tds_lock);
-
 	return 0;
 }
 
@@ -274,7 +275,7 @@
 	if (!ast_tvzero(tv)) {
 		struct ast_tm tm;
 		ast_localtime(&tv, &tm, NULL);
-		ast_strftime(dateField, len, DATE_FORMAT, &tm);
+		ast_strftime(dateField, len, "'" DATE_FORMAT "'", &tm);
 	} else {
 		ast_copy_string(dateField, "null", len);
 	}




More information about the svn-commits mailing list