[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