[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