diff options
Diffstat (limited to 'cdr')
-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 f469bc520..384b7be4d 100644 --- a/cdr/cdr_pgsql.c +++ b/cdr/cdr_pgsql.c @@ -193,7 +193,7 @@ static int pgsql_log(struct ast_cdr *cdr) } else { /* char, hopefully */ LENGTHEN_BUF2(31); - ast_localtime(&cdr->start, &tm, NULL); + ast_localtime(&cdr->answer, &tm, NULL); ast_strftime(buf, sizeof(buf), DATE_FORMAT, &tm); ast_str_append(&sql2, 0, "%s%s", first ? "" : ",", buf); } @@ -218,12 +218,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)cdr->end.tv_sec - when->tv_sec + cdr->end.tv_usec / 1000000.0 - when->tv_usec / 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)cdr->end.tv_sec - when->tv_sec + cdr->end.tv_usec / 1000000.0 - when->tv_usec / 1000000.0); } |