I've noticed a memory in leak in shared memory when a dlg_t is
updated using dlg_response_uac from a response that contains
a Record-Route header with more than one route.

N address=0xb5f5fb7c frag=0xb5f5fb64 size=76 used=1
  alloc'd from parser/parse_rr.c: do_duplicate_rr(280)
  start check=f0f0f0f0, end check= c0c0c0c0, abcdefed

After investigating, I have found that get_route_set is iterating through
each Record-Route header, and for each rr_t element in a Record-Route,
it calls the shm_duplicate_rr ( that calls do_duplicate_rr )

The comment of do_duplicate_rr claims that it duplicates only a single rr_t
structure, but if you look on the code, you will easily note that the entire
linked list starting with passed rr_t is duplicated. Also, a comment in
the beginning of the file claims that:

2003-10-21  duplicate_rr() duplicate the whole linked list of RR

How does this problem can be solved? Should do_duplicate_rr function
duplicate only a single rr_t?

_______________________________________________
Devel mailing list
[email protected]
http://lists.openser.org/cgi-bin/mailman/listinfo/devel

Reply via email to