From: Sean Bright Date: Sun, 5 Jan 2020 16:00:46 +0000 (-0500) Subject: res_pjsip_config_wizard: Fix change detection for wizard settings X-Git-Tag: 16.8.0-rc1~28^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=992dcdf780bf30f9e0a40b32a48f2e0dff8f5996;p=thirdparty%2Fasterisk.git res_pjsip_config_wizard: Fix change detection for wizard settings ast_sorcery_changeset_create() is not commutative and will fail to detect differences between two variable lists depending on what changed, so switch to ast_variable_lists_match(). ASTERISK-28492 #close Reported by: Jean-Denis Girard Change-Id: I7b3256983ddfaa2138d3de92a444a53b5193a4e1 --- diff --git a/res/res_pjsip_config_wizard.c b/res/res_pjsip_config_wizard.c index 4d24922880..aec4b58ac0 100644 --- a/res/res_pjsip_config_wizard.c +++ b/res/res_pjsip_config_wizard.c @@ -1101,18 +1101,17 @@ static void object_type_loaded_observer(const char *name, while ((category = ast_category_browse_filtered(cfg, NULL, category, "type=^wizard$"))) { const char *id = ast_category_get_name(category); struct ast_category *last_cat = NULL; - struct ast_variable *change_set = NULL; + int changes = 0; if (otw->last_config) { last_cat = ast_category_get(otw->last_config, id, "type=^wizard$"); - ast_sorcery_changeset_create(ast_category_first(category), ast_category_first(last_cat), &change_set); + changes = !ast_variable_lists_match(ast_category_first(category), ast_category_first(last_cat), 1); if (last_cat) { ast_category_delete(otw->last_config, last_cat); } } - if (!last_cat || change_set) { - ast_variables_destroy(change_set); + if (!last_cat || changes) { ast_debug(3, "%s: %s(s) for wizard '%s'\n", reloaded ? "Reload" : "Load", object_type, id); if (wizard_apply_handler(sorcery, otw, category)) { ast_log(LOG_ERROR, "Unable to create objects for wizard '%s'\n", id);