[asterisk-commits] seanbright: trunk r196725 - /trunk/cdr/cdr_sqlite3_custom.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue May 26 08:56:33 CDT 2009


Author: seanbright
Date: Tue May 26 08:56:30 2009
New Revision: 196725

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=196725
Log:
Use a properly allocated channel for substitution in cdr_sqlite3_custom.

Modified:
    trunk/cdr/cdr_sqlite3_custom.c

Modified: trunk/cdr/cdr_sqlite3_custom.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/cdr/cdr_sqlite3_custom.c?view=diff&rev=196725&r1=196724&r2=196725
==============================================================================
--- trunk/cdr/cdr_sqlite3_custom.c (original)
+++ trunk/cdr/cdr_sqlite3_custom.c Tue May 26 08:56:30 2009
@@ -237,7 +237,6 @@
 	int res = 0;
 	char *error = NULL;
 	char *sql = NULL;
-	struct ast_channel dummy = { 0, };
 	int count = 0;
 
 	if (db == NULL) {
@@ -249,16 +248,25 @@
 		char *escaped;
 		char subst_buf[2048];
 		struct values *value;
+		struct ast_channel *dummy;
 		struct ast_str *value_string = ast_str_create(1024);
-		dummy.cdr = cdr;
+
+		dummy = ast_channel_alloc(0, 0, "", "", "", "", "", 0, "Substitution/%p", cdr);
+		if (!dummy) {
+			ast_log(LOG_ERROR, "Unable to allocate channel for variable subsitution.\n");
+			ast_free(value_string);
+			return 0;
+		}
+		dummy->cdr = ast_cdr_dup(cdr);
 		AST_LIST_TRAVERSE(&sql_values, value, list) {
-			pbx_substitute_variables_helper(&dummy, value->expression, subst_buf, sizeof(subst_buf) - 1);
+			pbx_substitute_variables_helper(dummy, value->expression, subst_buf, sizeof(subst_buf) - 1);
 			escaped = sqlite3_mprintf("%q", subst_buf);
 			ast_str_append(&value_string, 0, "%s'%s'", ast_str_strlen(value_string) ? "," : "", escaped);
 			sqlite3_free(escaped);
 		}
 		sql = sqlite3_mprintf("INSERT INTO %q (%s) VALUES (%s)", table, columns, ast_str_buffer(value_string));
 		ast_debug(1, "About to log: %s\n", sql);
+		ast_channel_release(dummy);
 		ast_free(value_string);
 	}
 




More information about the asterisk-commits mailing list