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
