aboutsummaryrefslogtreecommitdiffstats
path: root/cdr.c
diff options
context:
space:
mode:
authormartinp <martinp@f38db490-d61c-443f-a65b-d21fe96a405b>2003-09-17 04:21:56 +0000
committermartinp <martinp@f38db490-d61c-443f-a65b-d21fe96a405b>2003-09-17 04:21:56 +0000
commit1eb504c228046bdddf11b42fb56180d092803528 (patch)
treee46162068b3ac130189ae7672785901ede087c27 /cdr.c
parent4bf7193cef559bb170f5d37a91d12eaad2b0eeae (diff)
Don't complain that wait4 is unkown and make sure that we won't segfault if chan->cdr is NULL
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1522 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'cdr.c')
-rwxr-xr-xcdr.c72
1 files changed, 36 insertions, 36 deletions
diff --git a/cdr.c b/cdr.c
index 3cbaac47e..ba7c5faa7 100755
--- a/cdr.c
+++ b/cdr.c
@@ -351,30 +351,28 @@ int ast_cdr_update(struct ast_channel *c)
char *name, *num;
char tmp[AST_MAX_EXTENSION] = "";
/* Grab source from ANI or normal Caller*ID */
- if (!cdr) {
- ast_log(LOG_NOTICE, "The cdr pointer is not set\n");
- return -1;
- }
- if (c->ani)
- strncpy(tmp, c->ani, sizeof(tmp) - 1);
- else if (c->callerid && strlen(c->callerid))
- strncpy(tmp, c->callerid, sizeof(tmp) - 1);
- if (c->callerid && strlen(c->callerid))
- strncpy(cdr->clid, c->callerid, sizeof(cdr->clid) - 1);
- else
- strcpy(cdr->clid, "");
- name = NULL;
- num = NULL;
- ast_callerid_parse(tmp, &name, &num);
- if (num) {
- ast_shrink_phone_number(num);
- strncpy(cdr->src, num, sizeof(cdr->src) - 1);
+ if (cdr) {
+ if (c->ani)
+ strncpy(tmp, c->ani, sizeof(tmp) - 1);
+ else if (c->callerid && strlen(c->callerid))
+ strncpy(tmp, c->callerid, sizeof(tmp) - 1);
+ if (c->callerid && strlen(c->callerid))
+ strncpy(cdr->clid, c->callerid, sizeof(cdr->clid) - 1);
+ else
+ strcpy(cdr->clid, "");
+ name = NULL;
+ num = NULL;
+ ast_callerid_parse(tmp, &name, &num);
+ if (num) {
+ ast_shrink_phone_number(num);
+ strncpy(cdr->src, num, sizeof(cdr->src) - 1);
+ }
+ /* Copy account code et-al */
+ strncpy(cdr->accountcode, c->accountcode, sizeof(cdr->accountcode) - 1);
+ /* Destination information */
+ strncpy(cdr->dst, c->exten, sizeof(cdr->dst) - 1);
+ strncpy(cdr->dcontext, c->context, sizeof(cdr->dcontext) - 1);
}
- /* Copy account code et-al */
- strncpy(cdr->accountcode, c->accountcode, sizeof(cdr->accountcode) - 1);
- /* Destination information */
- strncpy(cdr->dst, c->exten, sizeof(cdr->dst) - 1);
- strncpy(cdr->dcontext, c->context, sizeof(cdr->dcontext) - 1);
return 0;
}
@@ -421,18 +419,20 @@ void ast_cdr_post(struct ast_cdr *cdr)
void ast_cdr_reset(struct ast_cdr *cdr, int post)
{
- /* Post if requested */
- if (post) {
- ast_cdr_end(cdr);
- ast_cdr_post(cdr);
+ if (cdr) {
+ /* Post if requested */
+ if (post) {
+ ast_cdr_end(cdr);
+ ast_cdr_post(cdr);
+ }
+ /* Reset to initial state */
+ cdr->posted = 0;
+ memset(&cdr->start, 0, sizeof(cdr->start));
+ memset(&cdr->end, 0, sizeof(cdr->end));
+ memset(&cdr->answer, 0, sizeof(cdr->answer));
+ cdr->billsec = 0;
+ cdr->duration = 0;
+ ast_cdr_start(cdr);
+ cdr->disposition = AST_CDR_NOANSWER;
}
- /* Reset to initial state */
- cdr->posted = 0;
- memset(&cdr->start, 0, sizeof(cdr->start));
- memset(&cdr->end, 0, sizeof(cdr->end));
- memset(&cdr->answer, 0, sizeof(cdr->answer));
- cdr->billsec = 0;
- cdr->duration = 0;
- ast_cdr_start(cdr);
- cdr->disposition = AST_CDR_NOANSWER;
}