Skip to content
Snippets Groups Projects
Commit 992dcdf7 authored by Sean Bright's avatar Sean Bright
Browse files

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
parent 3818759e
Branches
Tags
No related merge requests found
...@@ -1101,18 +1101,17 @@ static void object_type_loaded_observer(const char *name, ...@@ -1101,18 +1101,17 @@ static void object_type_loaded_observer(const char *name,
while ((category = ast_category_browse_filtered(cfg, NULL, category, "type=^wizard$"))) { while ((category = ast_category_browse_filtered(cfg, NULL, category, "type=^wizard$"))) {
const char *id = ast_category_get_name(category); const char *id = ast_category_get_name(category);
struct ast_category *last_cat = NULL; struct ast_category *last_cat = NULL;
struct ast_variable *change_set = NULL; int changes = 0;
if (otw->last_config) { if (otw->last_config) {
last_cat = ast_category_get(otw->last_config, id, "type=^wizard$"); 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) { if (last_cat) {
ast_category_delete(otw->last_config, last_cat); ast_category_delete(otw->last_config, last_cat);
} }
} }
if (!last_cat || change_set) { if (!last_cat || changes) {
ast_variables_destroy(change_set);
ast_debug(3, "%s: %s(s) for wizard '%s'\n", reloaded ? "Reload" : "Load", object_type, id); ast_debug(3, "%s: %s(s) for wizard '%s'\n", reloaded ? "Reload" : "Load", object_type, id);
if (wizard_apply_handler(sorcery, otw, category)) { if (wizard_apply_handler(sorcery, otw, category)) {
ast_log(LOG_ERROR, "Unable to create objects for wizard '%s'\n", id); ast_log(LOG_ERROR, "Unable to create objects for wizard '%s'\n", id);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment