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(a)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(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