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 <miconda(a)gmail.com
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 <mino.haluz(a)gmail.com
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
listsr-dev@lists.sip-router.orghttp://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
> sr-dev(a)lists.sip-router.org
>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>