|
|
@ -59,8 +59,7 @@ static void ast_cdr_fork(struct ast_channel *chan)
|
|
|
|
struct ast_cdr *newcdr;
|
|
|
|
struct ast_cdr *newcdr;
|
|
|
|
struct ast_flags flags = { AST_CDR_FLAG_KEEP_VARS };
|
|
|
|
struct ast_flags flags = { AST_CDR_FLAG_KEEP_VARS };
|
|
|
|
|
|
|
|
|
|
|
|
if (!chan || !(cdr = chan->cdr))
|
|
|
|
cdr = chan->cdr;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (cdr->next)
|
|
|
|
while (cdr->next)
|
|
|
|
cdr = cdr->next;
|
|
|
|
cdr = cdr->next;
|
|
|
@ -79,11 +78,18 @@ static void ast_cdr_fork(struct ast_channel *chan)
|
|
|
|
|
|
|
|
|
|
|
|
static int forkcdr_exec(struct ast_channel *chan, void *data)
|
|
|
|
static int forkcdr_exec(struct ast_channel *chan, void *data)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int res=0;
|
|
|
|
int res = 0;
|
|
|
|
struct localuser *u;
|
|
|
|
struct localuser *u;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!chan->cdr) {
|
|
|
|
|
|
|
|
ast_log(LOG_WARNING, "Channel does not have a CDR\n");
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
LOCAL_USER_ADD(u);
|
|
|
|
LOCAL_USER_ADD(u);
|
|
|
|
|
|
|
|
|
|
|
|
if (!ast_strlen_zero(data))
|
|
|
|
if (!ast_strlen_zero(data))
|
|
|
|
ast_set2_flag(chan->cdr, strchr((char *)data, 'v'), AST_CDR_FLAG_KEEP_VARS);
|
|
|
|
ast_set2_flag(chan->cdr, strchr(data, 'v'), AST_CDR_FLAG_KEEP_VARS);
|
|
|
|
|
|
|
|
|
|
|
|
ast_cdr_fork(chan);
|
|
|
|
ast_cdr_fork(chan);
|
|
|
|
|
|
|
|
|
|
|
|