D-Bus: Skip property update actions when wpa_config_set() returns 1

When network properties are updated via dbus, wpa_config_set() is used
to update the property in the wpa_ssid struct. If it returns 1, the
property was not changed and there's no need to perform any of the
update actions.

Signed-off-by: Matthew Wang <matthewmwang@chromium.org>
This commit is contained in:
Matthew Wang 2020-07-15 17:17:40 -07:00 committed by Jouni Malinen
parent 1c58317f56
commit a87173b1d1

View File

@ -268,8 +268,11 @@ dbus_bool_t set_network_properties(struct wpa_supplicant *wpa_s,
} else } else
goto error; goto error;
if (wpa_config_set(ssid, entry.key, value, 0) < 0) ret = wpa_config_set(ssid, entry.key, value, 0);
if (ret < 0)
goto error; goto error;
if (ret == 1)
goto skip_update;
if (os_strcmp(entry.key, "bssid") != 0 && if (os_strcmp(entry.key, "bssid") != 0 &&
os_strcmp(entry.key, "priority") != 0) os_strcmp(entry.key, "priority") != 0)
@ -291,6 +294,7 @@ dbus_bool_t set_network_properties(struct wpa_supplicant *wpa_s,
else if (os_strcmp(entry.key, "priority") == 0) else if (os_strcmp(entry.key, "priority") == 0)
wpa_config_update_prio_list(wpa_s->conf); wpa_config_update_prio_list(wpa_s->conf);
skip_update:
os_free(value); os_free(value);
value = NULL; value = NULL;
wpa_dbus_dict_entry_clear(&entry); wpa_dbus_dict_entry_clear(&entry);