summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Rose <jrose@digium.com>2011-04-07 13:42:13 +0000
committerJonathan Rose <jrose@digium.com>2011-04-07 13:42:13 +0000
commit68dd87ef0dd9e4362e1dcc38c04c9c8b09e002c1 (patch)
tree82bb67269aff39e30956b7b1505a55a9916ef9f2
parent1e33d71b792fd58b6bf9ad9a25b505be9bc983c3 (diff)
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
-rw-r--r--main/features.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/main/features.c b/main/features.c
index 987a9ddef..cf08c68ab 100644
--- a/main/features.c
+++ b/main/features.c
@@ -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")) {