]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 272109 via svnmerge from
authorTerry Wilson <twilson@digium.com>
Wed, 23 Jun 2010 17:28:35 +0000 (17:28 +0000)
committerTerry Wilson <twilson@digium.com>
Wed, 23 Jun 2010 17:28:35 +0000 (17:28 +0000)
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: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@272124 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_meetme.c

index 6c9487a37f8b7f54c0ea8c61acddbc93b5a82b8d..edaf428a46db7185e771c2c9bd291ca1b3fe5f56 100644 (file)
@@ -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;
 }