[asterisk-commits] murf: branch murf/cel2cdr r179603 - in /team/murf/cel2cdr: apps/ cel/ channel...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Mar 2 23:07:52 CST 2009
Author: murf
Date: Mon Mar 2 23:07:46 2009
New Revision: 179603
URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=179603
Log:
When using cel2cdr, turn off all other sources of CDR generation. NOTE: come back & take care of the apps that want to display how long a channel has existed, etc.
Modified:
team/murf/cel2cdr/apps/app_authenticate.c
team/murf/cel2cdr/apps/app_dial.c
team/murf/cel2cdr/apps/app_followme.c
team/murf/cel2cdr/apps/app_forkcdr.c
team/murf/cel2cdr/apps/app_queue.c
team/murf/cel2cdr/apps/app_rpt.c
team/murf/cel2cdr/cel/cel_cel2cdr.c
team/murf/cel2cdr/channels/chan_agent.c
team/murf/cel2cdr/channels/chan_local.c
team/murf/cel2cdr/channels/chan_misdn.c
team/murf/cel2cdr/include/asterisk/cdr.h
team/murf/cel2cdr/main/cdr.c
team/murf/cel2cdr/main/channel.c
team/murf/cel2cdr/main/features.c
team/murf/cel2cdr/main/pbx.c
team/murf/cel2cdr/res/res_agi.c
team/murf/cel2cdr/res/res_monitor.c
Modified: team/murf/cel2cdr/apps/app_authenticate.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/apps/app_authenticate.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/apps/app_authenticate.c (original)
+++ team/murf/cel2cdr/apps/app_authenticate.c Mon Mar 2 23:07:46 2009
@@ -203,13 +203,13 @@
continue;
ast_md5_hash(md5passwd, passwd);
if (!strcmp(md5passwd, md5secret)) {
- if (ast_test_flag(&flags,OPT_ACCOUNT))
+ if (!ast_suppress_builtin_cdr && ast_test_flag(&flags,OPT_ACCOUNT))
ast_cdr_setaccount(chan, buf);
break;
}
} else {
if (!strcmp(passwd, buf)) {
- if (ast_test_flag(&flags, OPT_ACCOUNT))
+ if (!ast_suppress_builtin_cdr && ast_test_flag(&flags, OPT_ACCOUNT))
ast_cdr_setaccount(chan, buf);
break;
}
@@ -232,7 +232,7 @@
}
if ((retries < 3) && !res) {
- if (ast_test_flag(&flags,OPT_ACCOUNT) && !ast_test_flag(&flags,OPT_MULTIPLE))
+ if (!ast_suppress_builtin_cdr && ast_test_flag(&flags,OPT_ACCOUNT) && !ast_test_flag(&flags,OPT_MULTIPLE))
ast_cdr_setaccount(chan, passwd);
if (!(res = ast_streamfile(chan, "auth-thankyou", chan->language)))
res = ast_waitstream(chan, "");
Modified: team/murf/cel2cdr/apps/app_dial.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/apps/app_dial.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/apps/app_dial.c (original)
+++ team/murf/cel2cdr/apps/app_dial.c Mon Mar 2 23:07:46 2009
@@ -597,7 +597,7 @@
static void handle_cause(int cause, struct cause_args *num)
{
struct ast_cdr *cdr = num->chan->cdr;
-
+ /* if !ast_suppress_builtin_cdr, then cdr will be null */
switch(cause) {
case AST_CAUSE_BUSY:
if (cdr)
@@ -900,7 +900,7 @@
if (!peer) {
ast_verb(3, "%s answered %s\n", c->name, in->name);
peer = c;
- if (peer->cdr) {
+ if (!ast_suppress_builtin_cdr && peer->cdr) {
peer->cdr->answer = ast_tvnow();
peer->cdr->disposition = AST_CDR_ANSWERED;
}
@@ -1024,7 +1024,9 @@
/* Got hung up */
*to = -1;
strcpy(pa->status, "CANCEL");
- ast_cdr_noanswer(in->cdr);
+ if (in->cdr) {
+ ast_cdr_noanswer(in->cdr);
+ }
if (f) {
if (f->data.uint32) {
in->hangupcause = f->data.uint32;
@@ -1043,7 +1045,9 @@
if (onedigit_goto(in, context, (char) f->subclass, 1)) {
ast_verb(3, "User hit %c to disconnect call.\n", f->subclass);
*to = 0;
- ast_cdr_noanswer(in->cdr);
+ if (in->cdr) {
+ ast_cdr_noanswer(in->cdr);
+ }
*result = f->subclass;
strcpy(pa->status, "CANCEL");
ast_frfree(f);
@@ -1058,7 +1062,9 @@
ast_verb(3, "User hit %c to disconnect call.\n", f->subclass);
*to = 0;
strcpy(pa->status, "CANCEL");
- ast_cdr_noanswer(in->cdr);
+ if (in->cdr) {
+ ast_cdr_noanswer(in->cdr);
+ }
ast_frfree(f);
return NULL;
}
@@ -1085,8 +1091,9 @@
}
if (!*to)
ast_verb(3, "Nobody picked up in %d ms\n", orig);
- if (!*to || ast_check_hangup(in))
+ if (!ast_suppress_builtin_cdr && (!*to || ast_check_hangup(in))) {
ast_cdr_noanswer(in->cdr);
+ }
}
#ifdef HAVE_EPOLL
@@ -1581,7 +1588,7 @@
goto done;
}
- if (ast_test_flag64(&opts, OPT_RESETCDR) && chan->cdr)
+ if (!ast_suppress_builtin_cdr && ast_test_flag64(&opts, OPT_RESETCDR) && chan->cdr)
ast_cdr_reset(chan->cdr, NULL);
if (ast_test_flag64(&opts, OPT_PRIVACY) && ast_strlen_zero(opt_args[OPT_ARG_PRIVACY]))
opt_args[OPT_ARG_PRIVACY] = ast_strdupa(chan->exten);
@@ -1769,7 +1776,7 @@
res = ast_call(tc, numsubst, 0); /* Place the call, but don't wait on the answer */
/* Save the info in cdr's that we called them */
- if (chan->cdr)
+ if (!ast_suppress_builtin_cdr && chan->cdr)
ast_cdr_setdestchan(chan->cdr, tc->name);
/* check the results of ast_call */
@@ -1877,7 +1884,7 @@
hanguptree(outgoing, peer, 1);
outgoing = NULL;
/* If appropriate, log that we have a destination channel */
- if (chan->cdr)
+ if (!ast_suppress_builtin_cdr && chan->cdr)
ast_cdr_setdestchan(chan->cdr, peer->name);
if (peer->name)
pbx_builtin_setvar_helper(chan, "DIALEDPEERNAME", peer->name);
Modified: team/murf/cel2cdr/apps/app_followme.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/apps/app_followme.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/apps/app_followme.c (original)
+++ team/murf/cel2cdr/apps/app_followme.c Mon Mar 2 23:07:46 2009
@@ -471,12 +471,12 @@
if (tmpuser && tmpuser->ochan && tmpuser->state >= 0) {
outbound = tmpuser->ochan;
- if (!outbound->cdr) {
+ if (!ast_suppress_builtin_cdr && !outbound->cdr) {
outbound->cdr = ast_cdr_alloc();
if (outbound->cdr)
ast_cdr_init(outbound->cdr, outbound);
}
- if (outbound->cdr) {
+ if (!ast_suppress_builtin_cdr && outbound->cdr) {
char tmp[256];
snprintf(tmp, sizeof(tmp), "%s/%s", "Local", tmpuser->dialarg);
@@ -487,8 +487,9 @@
/* If the cause wasn't handled properly */
if (ast_cdr_disposition(outbound->cdr, outbound->hangupcause))
ast_cdr_failed(outbound->cdr);
- } else
+ } else if (!ast_suppress_builtin_cdr) {
ast_log(LOG_WARNING, "Unable to create Call Detail Record\n");
+ }
ast_hangup(tmpuser->ochan);
}
@@ -657,6 +658,14 @@
case AST_CONTROL_ANSWER:
ast_verb(3, "%s answered %s\n", winner->name, caller->name);
/* If call has been answered, then the eventual hangup is likely to be normal hangup */
+
+ {
+ char buf3[25];
+ time_t now;
+ time(&now);
+ snprintf(buf3, sizeof(buf3), "%ld", now);
+ pbx_builtin_setvar_helper(caller, "ANSWER", buf);
+ }
winner->hangupcause = AST_CAUSE_NORMAL_CLEARING;
caller->hangupcause = AST_CAUSE_NORMAL_CLEARING;
ast_verb(3, "Starting playback of %s\n", callfromname);
@@ -804,6 +813,13 @@
AST_LIST_TRAVERSE(&tpargs->cnumbers, nm, entry)
if (nm->order == idx)
break;
+ {
+ char buf3[25];
+ time_t now;
+ time(&now);
+ snprintf(buf3, sizeof(buf3), "%ld", now);
+ pbx_builtin_setvar_helper(caller, "START", buf);
+ }
while (nm) {
@@ -844,9 +860,9 @@
} else {
ast_verb(3, "couldn't reach at this number.\n");
if (outbound) {
- if (!outbound->cdr)
+ if (!ast_suppress_builtin_cdr && !outbound->cdr)
outbound->cdr = ast_cdr_alloc();
- if (outbound->cdr) {
+ if (!ast_suppress_builtin_cdr && outbound->cdr) {
char tmp[256];
ast_cdr_init(outbound->cdr, outbound);
@@ -858,7 +874,7 @@
/* If the cause wasn't handled properly */
if (ast_cdr_disposition(outbound->cdr,outbound->hangupcause))
ast_cdr_failed(outbound->cdr);
- } else {
+ } else if (!ast_suppress_builtin_cdr) {
ast_log(LOG_ERROR, "Unable to create Call Detail Record\n");
ast_hangup(outbound);
outbound = NULL;
@@ -973,19 +989,24 @@
static void end_bridge_callback(void *data)
{
char buf[80];
+ char *str;
time_t end;
struct ast_channel *chan = data;
time(&end);
ast_channel_lock(chan);
- if (chan->cdr->answer.tv_sec) {
- snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec);
+ str = pbx_builtin_getvar_helper(chan,"ANSWER");
+ if (str) {
+ time_t ans = atoi(str);
+ snprintf(buf, sizeof(buf), "%ld", end - ans);
pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf);
}
- if (chan->cdr->start.tv_sec) {
- snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec);
+ str = pbx_builtin_getvar_helper(chan,"START");
+ if (str) {
+ time_t start = atoi(str);
+ snprintf(buf, sizeof(buf), "%ld", end - start);
pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf);
}
ast_channel_unlock(chan);
Modified: team/murf/cel2cdr/apps/app_forkcdr.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/apps/app_forkcdr.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/apps/app_forkcdr.c (original)
+++ team/murf/cel2cdr/apps/app_forkcdr.c Mon Mar 2 23:07:46 2009
@@ -254,7 +254,9 @@
ast_set2_flag(chan->cdr, keepvars, AST_CDR_FLAG_KEEP_VARS);
}
- ast_cdr_fork(chan, flags, opts[OPT_ARG_VARSET]);
+ if (!ast_suppress_builtin_cdr) {
+ ast_cdr_fork(chan, flags, opts[OPT_ARG_VARSET]);
+ }
return res;
}
Modified: team/murf/cel2cdr/apps/app_queue.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/apps/app_queue.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/apps/app_queue.c (original)
+++ team/murf/cel2cdr/apps/app_queue.c Mon Mar 2 23:07:46 2009
@@ -2375,7 +2375,7 @@
(!tmp->lastqueue && qe->parent->wrapuptime && (time(NULL) - tmp->lastcall < qe->parent->wrapuptime))) {
ast_debug(1, "Wrapuptime not yet expired on queue %s for %s\n",
(tmp->lastqueue ? tmp->lastqueue->name : qe->parent->name), tmp->interface);
- if (qe->chan->cdr)
+ if (!ast_suppress_builtin_cdr && qe->chan->cdr)
ast_cdr_busy(qe->chan->cdr);
tmp->stillgoing = 0;
(*busies)++;
@@ -2384,7 +2384,7 @@
if (!qe->parent->ringinuse && (tmp->member->status != AST_DEVICE_NOT_INUSE) && (tmp->member->status != AST_DEVICE_UNKNOWN)) {
ast_debug(1, "%s in use, can't receive call\n", tmp->interface);
- if (qe->chan->cdr)
+ if (!ast_suppress_builtin_cdr && qe->chan->cdr)
ast_cdr_busy(qe->chan->cdr);
tmp->stillgoing = 0;
return 0;
@@ -2392,14 +2392,14 @@
if (tmp->member->paused) {
ast_debug(1, "%s paused, can't receive call\n", tmp->interface);
- if (qe->chan->cdr)
+ if (!ast_suppress_builtin_cdr && qe->chan->cdr)
ast_cdr_busy(qe->chan->cdr);
tmp->stillgoing = 0;
return 0;
}
if (use_weight && compare_weight(qe->parent,tmp->member)) {
ast_debug(1, "Priority queue delaying call to %s:%s\n", qe->parent->name, tmp->interface);
- if (qe->chan->cdr)
+ if (!ast_suppress_builtin_cdr && qe->chan->cdr)
ast_cdr_busy(qe->chan->cdr);
tmp->stillgoing = 0;
(*busies)++;
@@ -2415,7 +2415,7 @@
/* Request the peer */
tmp->chan = ast_request(tech, qe->chan->nativeformats, location, &status);
if (!tmp->chan) { /* If we can't, just go on to the next call */
- if (qe->chan->cdr)
+ if (!ast_suppress_builtin_cdr && qe->chan->cdr)
ast_cdr_busy(qe->chan->cdr);
tmp->stillgoing = 0;
@@ -2877,7 +2877,7 @@
break;
case AST_CONTROL_BUSY:
ast_verb(3, "%s is busy\n", o->chan->name);
- if (in->cdr)
+ if (!ast_suppress_builtin_cdr && in->cdr)
ast_cdr_busy(in->cdr);
do_hang(o);
endtime = (long) time(NULL);
@@ -2892,7 +2892,7 @@
break;
case AST_CONTROL_CONGESTION:
ast_verb(3, "%s is circuit-busy\n", o->chan->name);
- if (in->cdr)
+ if (!ast_suppress_builtin_cdr && in->cdr)
ast_cdr_busy(in->cdr);
endtime = (long) time(NULL);
endtime -= starttime;
@@ -3846,7 +3846,7 @@
else
ast_moh_stop(qe->chan);
/* If appropriate, log that we have a destination channel */
- if (qe->chan->cdr)
+ if (!ast_suppress_builtin_cdr && qe->chan->cdr)
ast_cdr_setdestchan(qe->chan->cdr, peer->name);
/* Make sure channels are compatible */
res = ast_channel_make_compatible(qe->chan, peer);
@@ -3906,8 +3906,8 @@
ast_channel_unlock(qe->chan);
if (monitorfilename)
ast_monitor_start(which, qe->parent->monfmt, monitorfilename, 1, X_REC_IN | X_REC_OUT);
- else if (qe->chan->cdr)
- ast_monitor_start(which, qe->parent->monfmt, qe->chan->cdr->uniqueid, 1, X_REC_IN | X_REC_OUT);
+ else if (qe->chan->uniqueid)
+ ast_monitor_start(which, qe->parent->monfmt, qe->chan->uniqueid, 1, X_REC_IN | X_REC_OUT);
else {
/* Last ditch effort -- no CDR, make up something */
snprintf(tmpid, sizeof(tmpid), "chan-%lx", ast_random());
@@ -3922,8 +3922,8 @@
if (mixmonapp) {
ast_debug(1, "Starting MixMonitor as requested.\n");
if (!monitorfilename) {
- if (qe->chan->cdr)
- ast_copy_string(tmpid, qe->chan->cdr->uniqueid, sizeof(tmpid));
+ if (qe->chan->uniqueid)
+ ast_copy_string(tmpid, qe->chan->uniqueid, sizeof(tmpid));
else
snprintf(tmpid, sizeof(tmpid), "chan-%lx", ast_random());
} else {
@@ -3992,10 +3992,10 @@
ast_debug(1, "Arguments being passed to MixMonitor: %s\n", mixmonargs);
/* We purposely lock the CDR so that pbx_exec does not update the application data */
- if (qe->chan->cdr)
+ if (!ast_suppress_builtin_cdr && qe->chan->cdr)
ast_set_flag(qe->chan->cdr, AST_CDR_FLAG_LOCKED);
ret = pbx_exec(qe->chan, mixmonapp, mixmonargs);
- if (qe->chan->cdr)
+ if (!ast_suppress_builtin_cdr && qe->chan->cdr)
ast_clear_flag(qe->chan->cdr, AST_CDR_FLAG_LOCKED);
} else {
@@ -4123,7 +4123,7 @@
qe->handled++;
ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "CONNECT", "%ld|%s|%ld", (long) time(NULL) - qe->start, peer->uniqueid,
(long)(orig - to > 0 ? (orig - to) / 1000 : 0));
- if (update_cdr && qe->chan->cdr)
+ if (!ast_suppress_builtin_cdr && update_cdr && qe->chan->cdr)
ast_copy_string(qe->chan->cdr->dstchannel, member->membername, sizeof(qe->chan->cdr->dstchannel));
if (qe->parent->eventwhencalled)
manager_event(EVENT_FLAG_AGENT, "AgentConnect",
Modified: team/murf/cel2cdr/apps/app_rpt.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/apps/app_rpt.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/apps/app_rpt.c (original)
+++ team/murf/cel2cdr/apps/app_rpt.c Mon Mar 2 23:07:46 2009
@@ -5473,7 +5473,7 @@
ast_copy_string(mychannel->exten, myrpt->exten, sizeof(mychannel->exten) - 1);
ast_copy_string(mychannel->context, myrpt->patchcontext, sizeof(mychannel->context) - 1);
- if (myrpt->p.acctcode)
+ if (!ast_suppress_builtin_cdr && myrpt->p.acctcode)
ast_cdr_setaccount(mychannel,myrpt->p.acctcode);
mychannel->priority = 1;
ast_channel_undefer_dtmf(mychannel);
Modified: team/murf/cel2cdr/cel/cel_cel2cdr.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/cel/cel_cel2cdr.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/cel/cel_cel2cdr.c (original)
+++ team/murf/cel2cdr/cel/cel_cel2cdr.c Mon Mar 2 23:07:46 2009
@@ -115,6 +115,11 @@
{
/* read the config file, set all the control variables. */
+ /* if this loads successfully, then set this var to suppress all the
+ builtin CDR stuff */
+
+ ast_suppress_builtin_cdr = 1;
+
/* set up the master table */
if (cel2cdr_enabled) {
if (!master_table) {
@@ -140,8 +145,7 @@
static int mod_reload_func(void)
{
mod_unload_func();
- mod_load_func();
- return AST_MODULE_LOAD_SUCCESS;
+ return mod_load_func();
}
Modified: team/murf/cel2cdr/channels/chan_agent.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/channels/chan_agent.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/channels/chan_agent.c (original)
+++ team/murf/cel2cdr/channels/chan_agent.c Mon Mar 2 23:07:46 2009
@@ -501,9 +501,11 @@
#if 0
ast_verbose("name is %s, link is %s\n",tmp, tmp2);
#endif
- if (!ast->cdr)
- ast->cdr = ast_cdr_alloc();
- ast_cdr_setuserfield(ast, tmp2);
+ if (!ast_suppress_builtin_cdr) {
+ if (!ast->cdr)
+ ast->cdr = ast_cdr_alloc();
+ ast_cdr_setuserfield(ast, tmp2);
+ }
res = 0;
} else
ast_log(LOG_ERROR, "Recording already started on that call.\n");
@@ -2299,7 +2301,9 @@
AST_LIST_LOCK(&agents);
AST_LIST_TRAVERSE(&agents, p, list) {
if (!strcasecmp(p->agent, tmp)) {
- if (changeoutgoing) snprintf(chan->cdr->channel, sizeof(chan->cdr->channel), "Agent/%s", p->agent);
+ if (!ast_suppress_builtin_cdr && chan->cdr) {
+ if (changeoutgoing) snprintf(chan->cdr->channel, sizeof(chan->cdr->channel), "Agent/%s", p->agent);
+ }
__agent_start_monitoring(chan, p, 1);
break;
}
Modified: team/murf/cel2cdr/channels/chan_local.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/channels/chan_local.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/channels/chan_local.c (original)
+++ team/murf/cel2cdr/channels/chan_local.c Mon Mar 2 23:07:46 2009
@@ -524,7 +524,10 @@
ast_string_field_set(p->chan, language, p->owner->language);
ast_string_field_set(p->chan, accountcode, p->owner->accountcode);
ast_string_field_set(p->chan, musicclass, p->owner->musicclass);
- ast_cdr_update(p->chan);
+ if (!ast_suppress_builtin_cdr) {
+ ast_cdr_update(p->chan);
+ }
+
p->chan->cdrflags = p->owner->cdrflags;
if (!ast_exists_extension(NULL, p->chan->context, p->chan->exten, 1, p->owner->cid.cid_num)) {
Modified: team/murf/cel2cdr/channels/chan_misdn.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/channels/chan_misdn.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/channels/chan_misdn.c (original)
+++ team/murf/cel2cdr/channels/chan_misdn.c Mon Mar 2 23:07:46 2009
@@ -4485,7 +4485,9 @@
if (digits) {
strncat(bc->dad, bc->info_dad, sizeof(bc->dad) - strlen(bc->dad) - 1);
ast_copy_string(ch->ast->exten, bc->dad, sizeof(ch->ast->exten));
- ast_cdr_update(ch->ast);
+ if (!ast_suppress_builtin_cdr) {
+ ast_cdr_update(ch->ast);
+ }
}
ast_queue_frame(ch->ast, &fr);
Modified: team/murf/cel2cdr/include/asterisk/cdr.h
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/include/asterisk/cdr.h?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/include/asterisk/cdr.h (original)
+++ team/murf/cel2cdr/include/asterisk/cdr.h Mon Mar 2 23:07:46 2009
@@ -351,6 +351,8 @@
extern char ast_default_accountcode[AST_MAX_ACCOUNT_CODE];
+extern int ast_suppress_builtin_cdr;
+
struct ast_cdr *ast_cdr_append(struct ast_cdr *cdr, struct ast_cdr *newcdr);
/*! \brief Reload the configuration file cdr.conf and start/stop CDR scheduling thread */
Modified: team/murf/cel2cdr/main/cdr.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/main/cdr.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/main/cdr.c (original)
+++ team/murf/cel2cdr/main/cdr.c Mon Mar 2 23:07:46 2009
@@ -1402,6 +1402,8 @@
if (config) {
if ((enabled_value = ast_variable_retrieve(config, "general", "enable"))) {
enabled = ast_true(enabled_value);
+ if (!enabled)
+ ast_suppress_builtin_cdr = 1; /* why fool around? */
}
if ((unanswered_value = ast_variable_retrieve(config, "general", "unanswered"))) {
unanswered = ast_true(unanswered_value);
Modified: team/murf/cel2cdr/main/channel.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/main/channel.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/main/channel.c (original)
+++ team/murf/cel2cdr/main/channel.c Mon Mar 2 23:07:46 2009
@@ -905,10 +905,12 @@
strcpy(tmp->exten, "s");
tmp->priority = 1;
-
- tmp->cdr = ast_cdr_alloc();
- ast_cdr_init(tmp->cdr, tmp);
- ast_cdr_start(tmp->cdr);
+
+ if (!ast_suppress_builtin_cdr) {
+ tmp->cdr = ast_cdr_alloc();
+ ast_cdr_init(tmp->cdr, tmp);
+ ast_cdr_start(tmp->cdr);
+ }
headp = &tmp->varshead;
AST_LIST_HEAD_INIT_NOLOCK(headp);
@@ -1729,7 +1731,7 @@
res = chan->tech->answer(chan);
}
ast_setstate(chan, AST_STATE_UP);
- if (cdr_answer) {
+ if (!ast_suppress_builtin_cdr && cdr_answer) {
ast_cdr_answer(chan->cdr);
}
ast_channel_unlock(chan);
@@ -1770,7 +1772,7 @@
/* Calling ast_cdr_answer when it it has previously been called
* is essentially a no-op, so it is safe.
*/
- if (cdr_answer) {
+ if (!ast_suppress_builtin_cdr && cdr_answer) {
ast_cdr_answer(chan->cdr);
}
break;
@@ -3474,7 +3476,7 @@
ast_channel_inherit_variables(oh->parent_channel, chan);
ast_channel_datastore_inherit(oh->parent_channel, chan);
}
- if (oh->account)
+ if (!ast_suppress_builtin_cdr && oh->account)
ast_cdr_setaccount(chan, oh->account);
}
ast_set_callerid(chan, cid_num, cid_name, cid_num);
@@ -3543,7 +3545,7 @@
if (res <= 0) {
if ( AST_CONTROL_RINGING == last_subclass )
chan->hangupcause = AST_CAUSE_NO_ANSWER;
- if (!chan->cdr && (chan->cdr = ast_cdr_alloc()))
+ if (!ast_suppress_builtin_cdr && !chan->cdr && (chan->cdr = ast_cdr_alloc()))
ast_cdr_init(chan->cdr, chan);
if (chan->cdr) {
char tmp[256];
@@ -4014,9 +4016,11 @@
clonechan->tech = t;
/* Swap the cdrs */
- cdr = original->cdr;
- original->cdr = clonechan->cdr;
- clonechan->cdr = cdr;
+ if (!ast_suppress_builtin_cdr) {
+ cdr = original->cdr;
+ original->cdr = clonechan->cdr;
+ clonechan->cdr = cdr;
+ }
t_pvt = original->tech_pvt;
original->tech_pvt = clonechan->tech_pvt;
Modified: team/murf/cel2cdr/main/features.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/main/features.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/main/features.c (original)
+++ team/murf/cel2cdr/main/features.c Mon Mar 2 23:07:46 2009
@@ -1294,7 +1294,7 @@
pbx_builtin_setvar_helper(transferer, "BLINDTRANSFER", transferee->name);
pbx_builtin_setvar_helper(transferee, "BLINDTRANSFER", transferer->name);
res=finishup(transferee);
- if (!transferer->cdr) { /* this code should never get called (in a perfect world) */
+ if (!ast_suppress_builtin_cdr && !transferer->cdr) { /* this code should never get called (in a perfect world) */
transferer->cdr=ast_cdr_alloc();
if (transferer->cdr) {
ast_cdr_init(transferer->cdr, transferer); /* initilize our channel's cdr */
@@ -2294,7 +2294,7 @@
static struct ast_cdr *pick_unlocked_cdr(struct ast_cdr *cdr)
{
struct ast_cdr *cdr_orig = cdr;
- while (cdr) {
+ while (!ast_suppress_builtin_cdr && cdr) {
if (!ast_test_flag(cdr,AST_CDR_FLAG_LOCKED))
return cdr;
cdr = cdr->next;
@@ -2474,7 +2474,7 @@
ast_copy_string(orig_peername,peer->name,sizeof(orig_peername));
orig_peer_cdr = peer_cdr;
- if (!chan_cdr || (chan_cdr && !ast_test_flag(chan_cdr, AST_CDR_FLAG_POST_DISABLED))) {
+ if (!ast_suppress_builtin_cdr && (!chan_cdr || (chan_cdr && !ast_test_flag(chan_cdr, AST_CDR_FLAG_POST_DISABLED)))) {
if (chan_cdr) {
ast_set_flag(chan_cdr, AST_CDR_FLAG_MAIN);
@@ -2705,7 +2705,7 @@
}
before_you_go:
- if (ast_test_flag(chan,AST_FLAG_BRIDGE_HANGUP_DONT)) {
+ if (!ast_suppress_builtin_cdr && ast_test_flag(chan,AST_FLAG_BRIDGE_HANGUP_DONT)) {
ast_clear_flag(chan,AST_FLAG_BRIDGE_HANGUP_DONT); /* its job is done */
if (bridge_cdr) {
ast_cdr_discard(bridge_cdr);
@@ -2714,7 +2714,7 @@
return res; /* if we shouldn't do the h-exten, we shouldn't do the bridge cdr, either! */
}
- if (config->end_bridge_callback) {
+ if (!ast_suppress_builtin_cdr && config->end_bridge_callback) {
config->end_bridge_callback(config->end_bridge_callback_data);
}
@@ -2722,7 +2722,7 @@
* if it were, then chan belongs to a different thread now, and might have been hung up long
* ago.
*/
- if (!ast_test_flag(&(config->features_caller),AST_FEATURE_NO_H_EXTEN) &&
+ if (!ast_suppress_builtin_cdr && !ast_test_flag(&(config->features_caller),AST_FEATURE_NO_H_EXTEN) &&
ast_exists_extension(chan, chan->context, "h", 1, chan->cid.cid_num)) {
struct ast_cdr *swapper = NULL;
char savelastapp[AST_MAX_EXTENSION];
@@ -2777,7 +2777,7 @@
/* obey the NoCDR() wishes. -- move the DISABLED flag to the bridge CDR if it was set on the channel during the bridge... */
new_chan_cdr = pick_unlocked_cdr(chan->cdr); /* the proper chan cdr, if there are forked cdrs */
- if (bridge_cdr && new_chan_cdr && ast_test_flag(new_chan_cdr, AST_CDR_FLAG_POST_DISABLED))
+ if (!ast_suppress_builtin_cdr && bridge_cdr && new_chan_cdr && ast_test_flag(new_chan_cdr, AST_CDR_FLAG_POST_DISABLED))
ast_set_flag(bridge_cdr, AST_CDR_FLAG_POST_DISABLED);
/* we can post the bridge CDR at this point */
@@ -2836,7 +2836,7 @@
}
}
- {
+ if(!ast_suppress_builtin_cdr) {
struct ast_channel *chan_ptr = NULL;
new_peer_cdr = pick_unlocked_cdr(peer->cdr); /* the proper chan cdr, if there are forked cdrs */
if (new_chan_cdr && ast_test_flag(new_chan_cdr, AST_CDR_FLAG_POST_DISABLED) && new_peer_cdr && !ast_test_flag(new_peer_cdr, AST_CDR_FLAG_POST_DISABLED))
@@ -3357,7 +3357,9 @@
ast_verb(3, "Channel %s connected to parked call %d\n", chan->name, park);
pbx_builtin_setvar_helper(chan, "PARKEDCHANNEL", peer->name);
- ast_cdr_setdestchan(chan->cdr, peer->name);
+ if (!ast_suppress_builtin_cdr) {
+ ast_cdr_setdestchan(chan->cdr, peer->name);
+ }
memset(&config, 0, sizeof(struct ast_bridge_config));
/* Get datastore for peer and apply it's features to the callee side of the bridge config */
@@ -3399,8 +3401,9 @@
res = ast_bridge_call(chan, peer, &config);
pbx_builtin_setvar_helper(chan, "PARKEDCHANNEL", peer->name);
- ast_cdr_setdestchan(chan->cdr, peer->name);
-
+ if (!ast_suppress_builtin_cdr) {
+ ast_cdr_setdestchan(chan->cdr, peer->name);
+ }
/* Simulate the PBX hanging up */
ast_hangup(peer);
return res;
Modified: team/murf/cel2cdr/main/pbx.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/main/pbx.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/main/pbx.c (original)
+++ team/murf/cel2cdr/main/pbx.c Mon Mar 2 23:07:46 2009
@@ -7920,7 +7920,7 @@
}
if (res < 0) { /* the call failed for some reason */
- if (*reason == 0) { /* if the call failed (not busy or no answer)
+ if (!ast_suppress_builtin_cdr && *reason == 0) { /* if the call failed (not busy or no answer)
* update the cdr with the failed message */
cdr_res = ast_pbx_outgoing_cdr_failed();
if (cdr_res != 0) {
@@ -7941,7 +7941,7 @@
ast_set_variables(chan, vars);
snprintf(failed_reason, sizeof(failed_reason), "%d", *reason);
pbx_builtin_setvar_helper(chan, "REASON", failed_reason);
- if (account)
+ if (!ast_suppress_builtin_cdr && account)
ast_cdr_setaccount(chan, account);
if (ast_pbx_run(chan)) {
ast_log(LOG_ERROR, "Unable to run PBX on %s\n", chan->name);
@@ -7972,7 +7972,7 @@
set_ext_pri(as->chan, exten, priority);
as->timeout = timeout;
ast_set_variables(chan, vars);
- if (account)
+ if (!ast_suppress_builtin_cdr && account)
ast_cdr_setaccount(chan, account);
if (ast_pthread_create_detached(&as->p, NULL, async_wait, as)) {
ast_log(LOG_WARNING, "Failed to start async wait\n");
@@ -8036,7 +8036,7 @@
chan = __ast_request_and_dial(type, format, data, timeout, reason, cid_num, cid_name, &oh);
if (chan) {
ast_set_variables(chan, vars);
- if (account)
+ if (!ast_suppress_builtin_cdr && account)
ast_cdr_setaccount(chan, account);
if (chan->_state == AST_STATE_UP) {
res = 0;
@@ -8082,7 +8082,7 @@
}
if (res < 0) { /* the call failed for some reason */
- if (*reason == 0) { /* if the call failed (not busy or no answer)
+ if (!ast_suppress_builtin_cdr && *reason == 0) { /* if the call failed (not busy or no answer)
* update the cdr with the failed message */
cdr_res = ast_pbx_outgoing_cdr_failed();
if (cdr_res != 0) {
@@ -8110,7 +8110,7 @@
ast_copy_string(as->appdata, appdata, sizeof(as->appdata));
as->timeout = timeout;
ast_set_variables(chan, vars);
- if (account)
+ if (!ast_suppress_builtin_cdr && account)
ast_cdr_setaccount(chan, account);
/* Start a new thread, and get something handling this channel. */
if (locked_channel)
@@ -8482,8 +8482,9 @@
args = ast_strdupa(data);
ast_app_parse_options(resetcdr_opts, &flags, NULL, args);
}
-
- ast_cdr_reset(chan->cdr, &flags);
+ if (!ast_suppress_builtin_cdr) {
+ ast_cdr_reset(chan->cdr, &flags);
+ }
return 0;
}
@@ -8494,7 +8495,9 @@
static int pbx_builtin_setamaflags(struct ast_channel *chan, void *data)
{
/* Copy the AMA Flags as specified */
- ast_cdr_setamaflags(chan, data ? data : "");
+ if (!ast_suppress_builtin_cdr) {
+ ast_cdr_setamaflags(chan, data ? data : "");
+ }
return 0;
}
Modified: team/murf/cel2cdr/res/res_agi.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/res/res_agi.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/res/res_agi.c (original)
+++ team/murf/cel2cdr/res/res_agi.c Mon Mar 2 23:07:46 2009
@@ -2756,7 +2756,7 @@
ast_module_ref(c->mod);
/* If the AGI command being executed is an actual application (using agi exec)
the app field will be updated in pbx_exec via handle_exec */
- if (chan->cdr && !ast_check_hangup(chan) && strcasecmp(argv[0], "EXEC"))
+ if (!ast_suppress_builtin_cdr && chan->cdr && !ast_check_hangup(chan) && strcasecmp(argv[0], "EXEC"))
ast_cdr_setapp(chan->cdr, "AGI", buf);
res = c->handler(chan, agi, argc, argv);
Modified: team/murf/cel2cdr/res/res_monitor.c
URL: http://svn.digium.com/svn-view/asterisk/team/murf/cel2cdr/res/res_monitor.c?view=diff&rev=179603&r1=179602&r2=179603
==============================================================================
--- team/murf/cel2cdr/res/res_monitor.c (original)
+++ team/murf/cel2cdr/res/res_monitor.c Mon Mar 2 23:07:46 2009
@@ -500,7 +500,7 @@
urlprefix = arg;
}
- if (urlprefix) {
+ if (!ast_suppress_builtin_cdr && urlprefix) {
snprintf(tmp, sizeof(tmp), "%s/%s.%s", urlprefix, args.fname_base,
((strcmp(args.format, "gsm")) ? "wav" : "gsm"));
if (!chan->cdr && !(chan->cdr = ast_cdr_alloc()))
More information about the asterisk-commits
mailing list