> On Jan. 19, 2015, 6:56 p.m., rmudgett wrote:
> > cleanup_all_regs() should just be the ao2_callback() line and the original
> > guts should be put into a cleanup_registration() ao2_callback function.
>
> Matt Jordan wrote:
> I'm not sure I understand your comment. cleanup_all_regs is being called
> by the ao2_callback, and is only called by the ao2_callback. Why would the
> structure need to be changed?
>
> rmudgett wrote:
> int cleanup_registration(void *obj, void *arg, flags)
> {
> guts of original cleanup_all_regs to destroy one registration. i.e.,
> What you have currently converted cleanup_all_regs into.
> return CMP_MATCH;
> }
> void cleanup_all_regs()
> {
> ao2_t_callback(registry_list, flags, cleanup_registration, NULL,
> "remove all SIP registry items");
> }
>
> This way you don't have to get the ao2_callback correct in two places. :)
>
Got it. That does make the code marginally better - changed :-)
- Matt
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/4355/#review14236
-----------------------------------------------------------
On Jan. 19, 2015, 7:50 p.m., Matt Jordan wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/4355/
> -----------------------------------------------------------
>
> (Updated Jan. 19, 2015, 7:50 p.m.)
>
>
> Review request for Asterisk Developers.
>
>
> Bugs: ASTERISK-24640 and ASTERISK-24673
> https://issues.asterisk.org/jira/browse/ASTERISK-24640
> https://issues.asterisk.org/jira/browse/ASTERISK-24673
>
>
> Repository: Asterisk
>
>
> Description
> -------
>
> When the SIP registrations were migrated to using ao2 in what was then trunk,
> the explicit destruction of the registrations on module reload was removed
> and not replaced with an ao2 equivalent. Debugging done by Stefan Engström,
> the issue reporter, on ASTERISK-24673 confirmed that the reference in the
> registry_list container was being leaked.
>
> Since the purpose of cleanup_all_regs is to prep a registration for
> destruction, this function has been converted to being an ao2_callback
> function callback, and an ao2_callback with OBJ_MULTIPLE | OBJ_NODATA |
> OBJ_UNLINK is now used to invoke the function. This cleans up each
> registration, but also removes it from the registration container
> registry_list.
>
>
> Diffs
> -----
>
> /branches/13/channels/chan_sip.c 430794
>
> Diff: https://reviewboard.asterisk.org/r/4355/diff/
>
>
> Testing
> -------
>
> Created an outbound registration to a SIP trunk. Confirmed that Asterisk was
> registered. Commented out the "register" line sip.conf, reloaded, and
> confirmed that the registration was gone.
>
> Stefan tested the patch independently and also confirmed that it fixed it on
> his test system.
>
>
> Thanks,
>
> Matt Jordan
>
>
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-dev