Merge "Unused realtime MOH classes not purged on 'moh reload'"

pull/7/head
zuul 8 years ago committed by Gerrit Code Review
commit d2e6eb2afe

@ -155,6 +155,7 @@ struct moh_files_state {
/* Custom astobj2 flag */ /* Custom astobj2 flag */
#define MOH_NOTDELETED (1 << 30) /*!< Find only records that aren't deleted? */ #define MOH_NOTDELETED (1 << 30) /*!< Find only records that aren't deleted? */
#define MOH_REALTIME (1 << 31) /*!< Find only records that are realtime */
static struct ast_flags global_flags[1] = {{0}}; /*!< global MOH_ flags */ static struct ast_flags global_flags[1] = {{0}}; /*!< global MOH_ flags */
@ -1676,7 +1677,9 @@ static int moh_class_mark(void *obj, void *arg, int flags)
{ {
struct mohclass *class = obj; struct mohclass *class = obj;
class->delete = 1; if ( ((flags & MOH_REALTIME) && class->realtime) || !(flags & MOH_REALTIME) ) {
class->delete = 1;
}
return 0; return 0;
} }
@ -1699,15 +1702,20 @@ static int load_moh_classes(int reload)
cfg = ast_config_load("musiconhold.conf", config_flags); cfg = ast_config_load("musiconhold.conf", config_flags);
if (cfg == CONFIG_STATUS_FILEMISSING || cfg == CONFIG_STATUS_FILEINVALID) { if (cfg == CONFIG_STATUS_FILEUNCHANGED) {
if (ast_check_realtime("musiconhold") && reload) { if (ast_check_realtime("musiconhold") && reload) {
ao2_t_callback(mohclasses, OBJ_NODATA, moh_class_mark, NULL, "Mark deleted classes"); ao2_t_callback(mohclasses, OBJ_NODATA | MOH_REALTIME, moh_class_mark, NULL, "Mark realtime classes for deletion");
ao2_t_callback(mohclasses, OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE, moh_classes_delete_marked, NULL, "Purge marked classes"); ao2_t_callback(mohclasses, OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE, moh_classes_delete_marked, NULL, "Purge marked classes");
} }
moh_rescan_files();
return 0; return 0;
} }
if (cfg == CONFIG_STATUS_FILEUNCHANGED) {
moh_rescan_files(); if (cfg == CONFIG_STATUS_FILEMISSING || cfg == CONFIG_STATUS_FILEINVALID) {
if (ast_check_realtime("musiconhold") && reload) {
ao2_t_callback(mohclasses, OBJ_NODATA, moh_class_mark, NULL, "Mark deleted classes");
ao2_t_callback(mohclasses, OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE, moh_classes_delete_marked, NULL, "Purge marked classes");
}
return 0; return 0;
} }

Loading…
Cancel
Save