[sr-dev] How to get dialog duration in miliseconds?
Mino Haluz
mino.haluz at gmail.com
Mon Feb 11 16:24:46 CET 2013
Ok, this was absolutely useless - $TV(Sn) gives ms ;)
On Mon, Feb 11, 2013 at 8:59 AM, Mino Haluz <mino.haluz at gmail.com> 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 <mino.haluz at gmail.com> 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 <
>> miconda at 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 at 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 at 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 at lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20130211/69aa67ab/attachment.htm>
More information about the sr-dev
mailing list