Hi list,
I am using Asterisk1.6.2 form a long time and upgarding to
Asterisk-1.8.23.1.
I am using mysql backend for cdr.
in asterisk-1.6.2 i have usegmtime=yes and it works as expected insert cdr
date in GMT0.
now i tested Asterisk-1.8.23.1 and asterisk-11.5 with same results no
matter what i configure in cdr_mysql.conf "timezone=UTC usegmtime=yes" cdr
always inserted in local time.

I dig into code of cdr_mysql.c and find a variable cdrzone when i set
cdrzone in configuration and load module with debug set to 1 it print on
console "Local time zone set to whatever i have in configuration i tried
cdrzone=GMT, cdrzone=UTC, cdrzone=yes and many combinations with
timezone=UTC and without timezone=UTS but cdr is alway in my local timezone
GMT +2.

in further investigation i have seen there is no timezone conversation.
from asterisk1.8.231 mysql_cdr.c

  if (!strcmp(entry->name, "calldate")) {
                                /*!\note
                                 * For some dumb reason, "calldate" used to
be formulated using
                                 * the datetime the record was posted,
rather than the start
                                 * time of the call.  If someone really
wants the old compatible
                                 * behavior, it's provided here.
                                 */
                                if (calldate_compat) {
                                        struct timeval tv = ast_tvnow();
                                        struct ast_tm tm;
                                        char timestr[128];
                                        ast_localtime(&tv, &tm,
ast_str_strlen(cdrzone) ? ast_str_buffer(cdrzone) : NULL);
                                        ast_strftime(timestr,
sizeof(timestr), "%Y-%m-%d %T", &tm);
                                        ast_cdr_setvar(cdr, "calldate",
timestr, 0);
                                        cdrname = "calldate";
                                } else {
                                        cdrname = "start";
                                }
                        } else {
                                cdrname = entry->cdrname;
                        }


from addons  1.6.2.4 mysql_cdr.c

 if (calldate_compat) {
                                        struct timeval tv = ast_tvnow();
                                        struct ast_tm tm;
                                        char timestr[128];
                                        ast_localtime(&tv, &tm, NULL);
                                        ast_strftime(timestr,
sizeof(timestr), "%Y-%m-%d %T", &tm);
                                        ast_cdr_setvar(cdr, "calldate",
timestr, 0);
                                        cdrname = "calldate";
                                } else if (usegmtime) {
                                        struct ast_tm tm;
                                        char timestr[128];
                                        ast_localtime(&cdr->start, &tm,
"GMT");
                                        ast_strftime(timestr,
sizeof(timestr), DATE_FORMAT, &tm);
                                        ast_cdr_setvar(cdr, "calldate",
timestr, 0);
                                        cdrname = "calldate";
                                } else {
                                        cdrname = "start";
                                }
                        } else {
                                cdrname = entry->cdrname;

please note else if(usegmtime)
the codes are removed from latest asterisk versions.
i am not c programmer anybody can help me solve this issue?

Thanks in advance.
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to