diff options
author | Tilghman Lesher <tilghman@meg.abyt.es> | 2010-12-20 17:48:09 +0000 |
---|---|---|
committer | Tilghman Lesher <tilghman@meg.abyt.es> | 2010-12-20 17:48:09 +0000 |
commit | 55c861888ab063f8f62a3546650b2d5641cda3cd (patch) | |
tree | 0f1122a9d4200f7dbbbacbf71f1d6e0ac2d603d8 | |
parent | cc0b7e7df540e5833c79c9b12ef880f03a74b922 (diff) |
Merged revisions 299131 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
................
r299131 | tilghman | 2010-12-20 11:47:10 -0600 (Mon, 20 Dec 2010) | 18 lines
Merged revisions 299130 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
........
r299130 | tilghman | 2010-12-20 11:41:24 -0600 (Mon, 20 Dec 2010) | 11 lines
If a call was not answered, then the billsec was calculated unusually large.
Also, due to a copy and paste error, a request for the answer field would have
given the start value, instead.
(closes issue #18460)
Reported by: joscas
Patches:
20101215__issue18460.diff.txt uploaded by tilghman (license 14)
Tested by: joscas
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@299132 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | cdr/cdr_pgsql.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c index 4efa0295d..826b09f3f 100644 --- a/cdr/cdr_pgsql.c +++ b/cdr/cdr_pgsql.c @@ -191,7 +191,7 @@ static int pgsql_log(struct ast_cdr *cdr) } else { /* char, hopefully */ LENGTHEN_BUF2(31); - ast_localtime(&cdr->start, &tm, tz); + ast_localtime(&cdr->answer, &tm, tz); ast_strftime(buf, sizeof(buf), DATE_FORMAT, &tm); ast_str_append(&sql2, 0, "%s%s", first ? "" : ",", buf); } @@ -216,12 +216,12 @@ static int pgsql_log(struct ast_cdr *cdr) LENGTHEN_BUF2(13); ast_str_append(&sql2, 0, "%s%s", first ? "" : ",", value); } else if (strncmp(cur->type, "float", 5) == 0) { - struct timeval *when = cur->name[0] == 'd' ? &cdr->start : &cdr->answer; + struct timeval *when = cur->name[0] == 'd' ? &cdr->start : ast_tvzero(cdr->answer) ? &cdr->end : &cdr->answer; LENGTHEN_BUF2(31); ast_str_append(&sql2, 0, "%s%f", first ? "" : ",", (double) (ast_tvdiff_us(cdr->end, *when) / 1000000.0)); } else { /* Char field, probably */ - struct timeval *when = cur->name[0] == 'd' ? &cdr->start : &cdr->answer; + struct timeval *when = cur->name[0] == 'd' ? &cdr->start : ast_tvzero(cdr->answer) ? &cdr->end : &cdr->answer; LENGTHEN_BUF2(31); ast_str_append(&sql2, 0, "%s'%f'", first ? "" : ",", (double) (ast_tvdiff_us(cdr->end, *when) / 1000000.0)); } |