aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authortwilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-23 17:28:35 +0000
committertwilson <twilson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-23 17:28:35 +0000
commit0dc712a3a165bc0734178cb915dc8d3911464598 (patch)
tree27c48e476fba802e1c06c41b2036a68c62417799 /apps
parentbcee8687d37404bd6aa45aac07415a8bd2273004 (diff)
Merged revisions 272109 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r272109 | twilson | 2010-06-23 12:21:40 -0500 (Wed, 23 Jun 2010) | 12 lines Make sure reload updates SLA config Even if there are no stations or trunks defined, we need to start the sla thread to make sure we get the reload event. Also, when doing a reload we need to remove the existing trunks and stations or they end up hanging around. (closes issue #16818) Reported by: mbonin Patches: sla_reload.patch uploaded by twilson (license 396) Tested by: twilson ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@272124 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r--apps/app_meetme.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 6c9487a37..edaf428a4 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -5409,6 +5409,19 @@ static void sla_check_reload(void)
return;
}
+ /* We need to actually delete the previous versions of trunks and stations now */
+ AST_RWLIST_TRAVERSE_SAFE_BEGIN(&sla_stations, station, entry) {
+ AST_RWLIST_REMOVE_CURRENT(entry);
+ ast_free(station);
+ }
+ AST_RWLIST_TRAVERSE_SAFE_END;
+
+ AST_RWLIST_TRAVERSE_SAFE_BEGIN(&sla_trunks, trunk, entry) {
+ AST_RWLIST_REMOVE_CURRENT(entry);
+ ast_free(trunk);
+ }
+ AST_RWLIST_TRAVERSE_SAFE_END;
+
/* yay */
sla_load_config(1);
sla.reload = 0;
@@ -5461,8 +5474,9 @@ static void *sla_thread(void *data)
ast_mutex_lock(&sla.lock);
}
- if (sla.reload)
+ if (sla.reload) {
sla_check_reload();
+ }
}
ast_mutex_unlock(&sla.lock);
@@ -6339,8 +6353,11 @@ static int sla_load_config(int reload)
ast_config_destroy(cfg);
- if (!reload && (!AST_LIST_EMPTY(&sla_stations) || !AST_LIST_EMPTY(&sla_stations)))
+ /* Even if we don't have any stations, we may after a reload and we need to
+ * be able to process the SLA_EVENT_RELOAD event in that case */
+ if (!reload) {
ast_pthread_create(&sla.thread, NULL, sla_thread, NULL);
+ }
return res;
}