Ok, this was absolutely useless - $TV(Sn) gives ms ;)
On Mon, Feb 11, 2013 at 8:59 AM, Mino Haluz <[email protected]> wrote: > I cannot free it after calling pv_get_strval, because it seems that this > value is not used instantly after calling :/ So it should be freed > somewhere else and I do not know where. > > > On Mon, Feb 11, 2013 at 8:33 AM, Mino Haluz <[email protected]> wrote: > >> Thanks, yes, I already solved it like this: >> >> int pv_get_timenows2(struct sip_msg *msg, pv_param_t *param, >> pv_value_t *res) >> { >> //time_t t; >> struct timeval tv; >> char buf[30]; >> str _s; >> gettimeofday(&tv, NULL); >> unsigned long long msEpoch = >> (unsigned long long)(tv.tv_sec) * 1000 + >> (unsigned long long)(tv.tv_usec) / 1000; >> _s.len = sprintf(buf, "%lld", msEpoch); >> _s.s = (char *)malloc(_s.len+1); >> strcpy(_s.s, buf); >> return pv_get_strval(msg, param, res, &_s); >> } >> >> I know that it is rather C related question, but I would like to avoid >> some memory leaks in kamailio. >> >> pv_get_strval seems to be some builtin kamailio function, so the question >> is, does it free _s.s automatically ? >> >> Mino >> >> >> On Fri, Feb 8, 2013 at 10:14 PM, Daniel-Constantin Mierla < >> [email protected]> wrote: >> >>> The problem is that buf is allocated on the stack, on a zone reserved >>> for pv_get_timenows2() function, which is destroyed as soon as the function >>> execution ends. >>> >>> You either define buf as static, or you allocate it dynamically in the >>> function and free it later. >>> >>> Cheers, >>> Daniel >>> >>> >>> On 2/7/13 7:25 PM, Mino Haluz wrote: >>> >>> I added new pseudovariale $TMS which gives time in miliseconds. If I >>> print $TMS value it is ok, but when I assign it to avp, it gives strange >>> values. >>> >>> pv_time.c >>> >>> int pv_get_timenows2(struct sip_msg *msg, pv_param_t *param, >>> pv_value_t *res) >>> { >>> struct timeval tv; >>> char buf[30]; >>> str _s; >>> gettimeofday(&tv, NULL); >>> unsigned long long msEpoch = >>> (unsigned long long)(tv.tv_sec) * 1000 + >>> (unsigned long long)(tv.tv_usec) / 1000; >>> _s.len = sprintf(buf, "%lld", msEpoch); >>> _s.s = buf; //<------- I think problem is here >>> return pv_get_strval(msg, param, res, &_s); >>> } >>> >>> So how should I properly copy buf to _s ? >>> >>> Thanks, >>> Mino >>> >>> >>> >>> >>> >>> On Thu, Feb 7, 2013 at 11:00 AM, Mino Haluz <[email protected]>wrote: >>> >>>> Hi, >>>> >>>> I assume there is no avp or function which could give me duration of >>>> ended dialog in miliseconds (I have to send it in RADIUS message). I can >>>> run some bash script which could return me this value but seems to me bit >>>> awkward. >>>> >>>> How you would do it? To adjust dialog module so that it could return >>>> it to some avp value within dialog-end event route and thus save it to >>>> radius? >>>> >>>> Mino >>>> >>> >>> >>> >>> _______________________________________________ >>> sr-dev mailing >>> [email protected]http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev >>> >>> >>> -- >>> Daniel-Constantin Mierla - >>> http://www.asipto.comhttp://twitter.com/#!/miconda - >>> http://www.linkedin.com/in/miconda >>> Kamailio World Conference, April 16-17, 2013, Berlin >>> - http://conference.kamailio.com - >>> >>> >>> _______________________________________________ >>> sr-dev mailing list >>> [email protected] >>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev >>> >>> >> >
_______________________________________________ sr-dev mailing list [email protected] http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
