Merged revisions 313048 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r313048 | jrose | 2011-04-07 08:35:33 -0500 (Thu, 07 Apr 2011) | 16 lines
  
  Merged revisions 313047 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2
  
  ........
    r313047 | jrose | 2011-04-07 08:23:01 -0500 (Thu, 07 Apr 2011) | 9 lines
    
    Makes parking lots clear and rebuild properly when features reload is invoked from CLI
    
    Before, default parkinglot in context parkedcalls with ext 700 would always be present and when reload was invoked, the previous parkinglots would not be cleared.
    
    (closes issue #18801)
    Reported by: mickecarlsson
    
    Review: https://reviewboard.asterisk.org/r/1161/
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@313049 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Jonathan Rose 2011-04-07 13:42:13 +00:00
parent 1e33d71b79
commit 68dd87ef0d
1 changed files with 24 additions and 1 deletions

View File

@ -4857,6 +4857,17 @@ static int load_config(void)
"applicationmap"
};
/* Clear the existing parkinglots in the parkinglots container. */
{
struct ast_parkinglot *p;
struct ao2_iterator iter = ao2_iterator_init(parkinglots, 0);
while ((p = ao2_iterator_next(&iter))) {
ao2_unlink(parkinglots, p);
ao2_ref(p,-1);
}
ao2_iterator_destroy(&iter);
}
default_parkinglot = build_parkinglot(DEFAULT_PARKINGLOT, NULL);
if (default_parkinglot) {
ao2_lock(default_parkinglot);
@ -4906,7 +4917,19 @@ static int load_config(void)
ast_log(LOG_WARNING,"Could not load features.conf\n");
return 0;
}
for (var = ast_variable_browse(cfg, "general"); var; var = var->next) {
if ((var = ast_variable_browse(cfg, "general"))) {
/* Find a general context in features.conf, we need to clear our existing default context */
/* Can't outright destroy the parking lot because it's needed in a little while. */
if ((con = ast_context_find(default_parkinglot->parking_con))) {
ast_context_destroy(con, registrar);
}
if ((con = ast_context_find(default_parkinglot->parking_con_dial))) {
ast_context_destroy(con, registrar);
}
}
for (; var; var = var->next) {
if (!strcasecmp(var->name, "parkext")) {
ast_copy_string(default_parkinglot->parkext, var->value, sizeof(default_parkinglot->parkext));
} else if (!strcasecmp(var->name, "context")) {