From: Sean Bright Date: Tue, 26 May 2009 12:14:14 +0000 (+0000) Subject: Use a properly allocated channel for substitution in cdr_manager. X-Git-Tag: 11.0.0-beta1~4825 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b5438876645077179de605dda6557c816d92945b;p=thirdparty%2Fasterisk.git Use a properly allocated channel for substitution in cdr_manager. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@196622 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/cdr/cdr_manager.c b/cdr/cdr_manager.c index 8a4a43e1ff..aff60d355d 100644 --- a/cdr/cdr_manager.c +++ b/cdr/cdr_manager.c @@ -127,7 +127,6 @@ static int manager_log(struct ast_cdr *cdr) char strAnswerTime[80] = ""; char strEndTime[80] = ""; char buf[CUSTOM_FIELDS_BUF_SIZE]; - struct ast_channel dummy; if (!enablecdr) return 0; @@ -146,9 +145,14 @@ static int manager_log(struct ast_cdr *cdr) buf[0] = 0; /* Custom fields handling */ if (customfields != NULL && ast_str_strlen(customfields)) { - memset(&dummy, 0, sizeof(dummy)); - dummy.cdr = cdr; - pbx_substitute_variables_helper(&dummy, ast_str_buffer(customfields), buf, sizeof(buf) - 1); + struct ast_channel *dummy = ast_channel_alloc(0, 0, "", "", "", "", "", 0, "Substitution/%p", cdr); + if (!dummy) { + ast_log(LOG_ERROR, "Unable to allocate channel for variable substitution.\n"); + return 0; + } + dummy->cdr = ast_cdr_dup(cdr); + pbx_substitute_variables_helper(dummy, ast_str_buffer(customfields), buf, sizeof(buf) - 1); + ast_channel_release(dummy); } manager_event(EVENT_FLAG_CDR, "Cdr",