[sr-dev] [kamailio] Latest 4.3.3 commit e275bc fails to write cdr (acc module) (#359)

MayamaTakeshi notifications at github.com
Tue Oct 6 00:12:30 CEST 2015


This is an intermittent problem (it doesn't happen all the time).

Version:
```
[root at lab002189-flip-server install]# kamctl fifo version
Server:: kamailio (4.3.3 (x86_64/linux))
Build:: mi_core.c compiled on 17:06:31 Oct  5 2015 with gcc 4.4.7
Flags:: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, DBG_QM_MALLOC, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
GIT:: e275bc
```
Full log:
```
[root at lab002189-flip-server install]# cat /var/log/kamailio/kamailio.log
2015-10-06T06:50:44.443018+09:00 lab002189-flip-server /usr/local/src/git/kamailio-4.3/kamailio[6126]: WARNING: dispatcher [dispatch.c:792]: ds_load_db(): no dispatching data in the db -- empty destination set
2015-10-06T06:50:56.409999+09:00 lab002189-flip-server /usr/local/src/git/kamailio-4.3/kamailio[6110]: ERROR: acc [acc_cdr.c:199]: db_write_cdr(): failed to convert string to double - 111.
2015-10-06T06:50:56.410019+09:00 lab002189-flip-server /usr/local/src/git/kamailio-4.3/kamailio[6110]: ERROR: acc [acc_cdr.c:636]: cdr_on_failed(): failed to write cdr!
```
The code is this in modules/acc/acc_cdr.c:
```
                        case TYPE_DOUBLE:
                                VAL_TYPE(db_cdr_vals+i)=DB1_DOUBLE;
                                VAL_NULL(db_cdr_vals+i)=0;
                                double_val = strtod(cdr_value_array[i].s, &end);
                                if(errno && (errno != EAGAIN)) {
                                        LM_ERR("failed to convert string to double - %d.\n", errno);
                                        goto error;
                                }
                                VAL_DOUBLE(db_cdr_vals+i) = double_val;
                                break;
```

The value errno=111 (ECONNREFUSED) doesn't make sense for strtod so i understand the problem is that the errno is not being zeroed before entering the loop that processes the cdr data, so errno is being set somewhere else, strtod is successful but the errno check fails.



---
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/359
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20151005/e3547b69/attachment.html>


More information about the sr-dev mailing list