[OpenSER-Devel] memory leak in canceled call with diversion header

Bogdan-Andrei Iancu bogdan at voice-system.ro
Wed Feb 6 09:36:39 UTC 2008


Hi Will,

Yes, this is right - mainly because there are some headers that have a 
similar syntax like TO/FROM hdr and use the parse_to() function. But the 
message cleaner is not aware of that and leaks the parsed part of the 
header.

I will take a look on this.

Best regards,
Bogdan

William Quan wrote:
> I think my issue is with ACC log_extra setting:
>     modparam("acc", "log_extra", "div=$di")
>
> The acc callback 'on_missed' is invoked when the call is canceled (487). 
> With this 'log_extra' setting, the acc function extra2strar() executes 
> and parses the diversion header in the request. It is this memory that 
> is not freed (msg->diversion->parsed).
>
> Is function free_cell() supposed to clean this up with the rest of the txn?
> --will
>
>
> Juha Heinanen wrote:
>   
>> William Quan writes:
>>
>>  > Looking for advice on a memory problem in openser v1.2.3.
>>  > A simple call is canceled, but the memory associated with the 
>>  > 'msg->diversion->parsed' is leaking (Invite contains a 'Diversion' header).
>>  > Processing the 487 appears to be running tm callbacks that parse the 
>>  > message (while allocating memory), which do not later get freed.
>>
>> will,
>>
>> i didn't try to interpret your memory debug, but took a look at
>> diversion header parsing code.  like many other header parsers, it is
>> using parse_to() function and there is in hf.c/clean_hdr_field()
>> function case 
>>
>> 		case HDR_DIVERSION_T:
>> 			free_to(hf->parsed);
>> 			break;
>>
>> so i didn't find anything specific to diversion header parsing that
>> could explain a leak.  it doesn't mean that there couldn't be a problem
>> somewhere else.
>>
>> -- juha
>>     



More information about the Devel mailing list