----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviewboard.asterisk.org/r/3777/#review12702 -----------------------------------------------------------
This file is terrible when it comes to {} around code blocks. I'm not flagging issues for this, but it would be great if you could add brackets to places you are making changes. /trunk/main/loader.c <https://reviewboard.asterisk.org/r/3777/#comment22981> Not sure we want this, but if we do I think it should be ast_debug. - Corey Farrell On July 14, 2014, 4:16 p.m., Matt Jordan wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviewboard.asterisk.org/r/3777/ > ----------------------------------------------------------- > > (Updated July 14, 2014, 4:16 p.m.) > > > Review request for Asterisk Developers. > > > Repository: Asterisk > > > Description > ------- > > When Asterisk starts a module (calling its load_module function), it > re-orders the module list, sorting it alphabetically. Ostensibly, this was > done so that the output of 'module show' listed modules in alphabetic order. > This had the unfortunate side effect of making modules with complex usage > patterns practically unloadable. A module that has a large number of modules > that depend on it is typically abandoned during the unloading process. This > results in its memory not being reclaimed during exit. > > Generally, this isn't harmful - when the process is destroyed, the operating > system will reclaim all memory allocated by the process. However, it makes > tracking memory leaks or ref debug leaks a real pain. > > While this patch is not a complete overhaul of the module loader - such an > effort would be beyond the scope of what could be done for Asterisk 13 - this > does make some marginal improvements to the loader such that modules like > res_pjsip or res_stasis *may* be made properly un-loadable in the future. > 1. The linked list of modules has been replaced with a doubly linked list. > This allows traversal of the module list to occur backwards. The module > shutdown routine now walks the global list backwards when it attempts to > unload modules. > 2. The alphabetic reorganization of the module list on startup has been > removed. Instead, a started module is placed at the end of the module list. > 3. The ast_update_module_list function - which is used by the CLI to display > the modules - now does the sorting alphabetically itself. It creates its own > linked list and inserts the modules into it in alphabetic order. This allows > for the intent of the previous code to be maintained. > > This patch also contains a fix for res_calendar. Without calendar.conf, the > calendar modules were improperly bumping the use count of res_calendar, then > failing to load themselves. This patch makes it so that we detect whether or > not calendaring is enabled before altering the use count. > > > Diffs > ----- > > /trunk/res/res_calendar.c 418436 > /trunk/main/loader.c 418436 > > Diff: https://reviewboard.asterisk.org/r/3777/diff/ > > > Testing > ------- > > Verified that the CLI command worked appropriately. > > Verified that module loading/unloading of res_calendar (whose calendar > modules modify the res_calendar use count) loaded/unloaded properly: > > Asterisk Dynamic Loader Starting: > [Jul 14 15:14:52] NOTICE[11877]: loader.c:1317 load_modules: 6 modules will > be loaded. > Loading res_calendar.so. > Loading res_calendar_icalendar.so. > Loading res_calendar_exchange.so. > Loading res_calendar_caldav.so. > Loading res_calendar_ews.so. > Asterisk Ready. > *CLI> core stop gracefully > Waiting for inactivity to perform halt... > Unloading res_calendar_ews.so > Unloading res_calendar_caldav.so > Unloading res_calendar_exchange.so > Unloading res_calendar_icalendar.so > Unloading res_calendar.so > Asterisk cleanly ending (0). > Executing last minute cleanups > > Verified that using autoload with all modules, module are started as they > were previously, and now are stopped/unloaded in the reverse order. > > > 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